Benoit Chesneau avatar Benoit Chesneau committed dad4753 Merge

merge default

Comments (0)

Files changed (45)

 edoc-info
 .DS_Store 
 priv/log/
-doc/
+
+doc/*.html
 
 \.beam$
 ^tmp/
 f4e08f35541f5539f4c0533a603db4166f29e30e 0.2a
 3ad4305a868a774d8606b0037894d3f4aebee326 0.2
+80924d02e3013b13fdc5b4046a243eea36aca96a 0.3
 ERLC_FLAGS := -W $(INCLUDE_DIRS:%=-I %) $(EBIN_DIRS:%=-pa %)
 APP          := couchbeam
 
-all: erl ebin/$(APP).app
+all: lhttpc erl ebin/$(APP).app
 
 lhttpc:
 	@(cd deps/lhttpc;$(MAKE))
 clean: 
 	@echo "removing:"
 	@rm -fv ebin/*.beam ebin/*.app
+	@rm -fv deps/lhttpc/ebin/*.beam deps/lhttpc/ebin/*.app
 
 ebin/$(APP).app: src/$(APP).app
 	@cp -v src/$(APP).app $@
 
-couchbeam 0.2 - 2009 (c) Benoît Chesneau <benoitc@e-engura.org>
+couchbeam 0.3 - 2009 (c) Benoît Chesneau <benoitc@e-engura.org>
 ---------------------------------------------------------------
 
 **couchbeam** is a simple erlang CouchDB framework. couchbeam provides you a full featured and easy client to access and manage multiple couchdb Nodes.
Add a comment to this file

deps/lhttpc/doc/erlang.png

Added
New image

deps/lhttpc/doc/index.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>The lhttpc application</title>
+</head>
+<frameset cols="20%,80%">
+<frame src="modules-frame.html" name="modulesFrame" title="">
+
+<frame src="overview-summary.html" name="overviewFrame" title="">
+<noframes>
+<h2>This page uses frames</h2>
+<p>Your browser does not accept frames.
+<br>You should go to the <a href="overview-summary.html">non-frame version</a> instead.
+</p>
+</noframes>
+</frameset>
+</html>

deps/lhttpc/doc/lhttpc.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module lhttpc</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module lhttpc</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Main interface to the lightweight http client.
+
+<p><b>Behaviours:</b> <a href="application.html"><tt>application</tt></a>.</p>
+<p><b>Authors:</b> Oscar Hellström (<a href="mailto:oscar@erlang-consulting.com"><tt>oscar@erlang-consulting.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Main interface to the lightweight http client.
+   See <a href="#request-4"><code>request/4</code></a>, <a href="#request-5"><code>request/5</code></a> and <a href="#request-6"><code>request/6</code></a> functions.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#get_body_part-1">get_body_part/1</a></td><td>Reads a body part from an ongoing response when
+  <code>{partial_download, PartialDownloadOptions}</code> is used.</td></tr>
+<tr><td valign="top"><a href="#get_body_part-2">get_body_part/2</a></td><td>Reads a body part from an ongoing response when
+  <code>{partial_download, PartialDownloadOptions}</code> is used.</td></tr>
+<tr><td valign="top"><a href="#request-4">request/4</a></td><td>Sends a request without a body.</td></tr>
+<tr><td valign="top"><a href="#request-5">request/5</a></td><td>Sends a request with a body.</td></tr>
+<tr><td valign="top"><a href="#request-6">request/6</a></td><td>Sends a request with a body.</td></tr>
+<tr><td valign="top"><a href="#request-9">request/9</a></td><td>Sends a request with a body.</td></tr>
+<tr><td valign="top"><a href="#send_body_part-2">send_body_part/2</a></td><td>Sends a body part to an ongoing request when
+  <code>{partial_upload, WindowSize}</code> is used.</td></tr>
+<tr><td valign="top"><a href="#send_body_part-3">send_body_part/3</a></td><td>Sends a body part to an ongoing request when
+  <code>{partial_upload, WindowSize}</code> is used.</td></tr>
+<tr><td valign="top"><a href="#send_trailers-2">send_trailers/2</a></td><td>Sends trailers to an ongoing request when <code>{partial_upload,
+  WindowSize}</code> is used and no <code>Content-Length</code> was specified.</td></tr>
+<tr><td valign="top"><a href="#send_trailers-3">send_trailers/3</a></td><td>Sends trailers to an ongoing request when
+  <code>{partial_upload, WindowSize}</code> is used and no <code>Content-Length</code> was
+  specified.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="get_body_part-1">get_body_part/1</a></h3>
+<div class="spec">
+<p><tt>get_body_part(HTTPClient::pid()) -&gt; Result</tt>
+<ul class="definitions"><li><tt>Result = {ok, Bin} | {ok, {http_eob, Trailers}}</tt></li>
+<li><tt>Trailers = [{Header, Value}]</tt></li>
+<li><tt>Header = string() | binary() | atom()</tt></li>
+<li><tt>Value = string() | binary()</tt></li>
+</ul></p>
+</div><p>Reads a body part from an ongoing response when
+  <code>{partial_download, PartialDownloadOptions}</code> is used. The default timeout,
+  <code>infinity</code> will be used.
+  Would be the same as calling
+  <code>get_body_part(HTTPClient, infinity)</code>.</p>
+
+<h3 class="function"><a name="get_body_part-2">get_body_part/2</a></h3>
+<div class="spec">
+<p><tt>get_body_part(HTTPClient::pid(), Timeout) -&gt; Result</tt>
+<ul class="definitions"><li><tt>Timeout = integer() | infinity</tt></li>
+<li><tt>Result = {ok, Bin} | {ok, {http_eob, Trailers}}</tt></li>
+<li><tt>Trailers = [{Header, Value}]</tt></li>
+<li><tt>Header = string() | binary() | atom()</tt></li>
+<li><tt>Value = string() | binary()</tt></li>
+</ul></p>
+</div><p>Reads a body part from an ongoing response when
+  <code>{partial_download, PartialDownloadOptions}</code> is used.
+  <code>Timeout</code> is the timeout for reading the next body part in milliseconds.
+  <code>http_eob</code> marks the end of the body. If there were Trailers in the
+  response those are returned with <code>http_eob</code> as well.</p>
+
+<h3 class="function"><a name="request-4">request/4</a></h3>
+<div class="spec">
+<p><tt>request(URL, Method, Hdrs, Timeout) -&gt; Result</tt>
+<ul class="definitions"><li><tt>URL = string()</tt></li>
+<li><tt>Method = string() | atom()</tt></li>
+<li><tt>Hdrs = [{Header, Value}]</tt></li>
+<li><tt>Header = string() | binary() | atom()</tt></li>
+<li><tt>Value = string() | binary()</tt></li>
+<li><tt>Timeout = integer() | infinity</tt></li>
+<li><tt>Result = {ok, {{StatusCode, ReasonPhrase}, Hdrs, ResponseBody}} | {error, Reason}</tt></li>
+<li><tt>StatusCode = integer()</tt></li>
+<li><tt>ReasonPhrase = string()</tt></li>
+<li><tt>ResponseBody = binary()</tt></li>
+<li><tt>Reason = connection_closed | connect_timeout | timeout</tt></li>
+</ul></p>
+</div><p>Sends a request without a body.
+  Would be the same as calling <code>request(URL, Method, Hdrs, [], Timeout)</code>,
+  that is <a href="#request-5"><code>request/5</code></a> with an empty body (<code>Body</code> could also be <code>&lt;&lt;&gt;&gt;</code>).</p>
+
+<h3 class="function"><a name="request-5">request/5</a></h3>
+<div class="spec">
+<p><tt>request(URL, Method, Hdrs, Body::RequestBody, Timeout) -&gt; Result</tt>
+<ul class="definitions"><li><tt>URL = string()</tt></li>
+<li><tt>Method = string() | atom()</tt></li>
+<li><tt>Hdrs = [{Header, Value}]</tt></li>
+<li><tt>Header = string() | binary() | atom()</tt></li>
+<li><tt>Value = string() | binary()</tt></li>
+<li><tt>RequestBody = <a href="#type-iolist">iolist()</a></tt></li>
+<li><tt>Timeout = integer() | infinity</tt></li>
+<li><tt>Result = {ok, {{StatusCode, ReasonPhrase}, Hdrs, ResponseBody}} | {error, Reason}</tt></li>
+<li><tt>StatusCode = integer()</tt></li>
+<li><tt>ReasonPhrase = string()</tt></li>
+<li><tt>ResponseBody = binary()</tt></li>
+<li><tt>Reason = connection_closed | connect_timeout | timeout</tt></li>
+</ul></p>
+</div><p>Sends a request with a body.
+  Would be the same as calling
+  <code>request(URL, Method, Hdrs, Body, Timeout, [])</code>, that is <a href="#request-6"><code>request/6</code></a>
+  with no options.</p>
+
+<h3 class="function"><a name="request-6">request/6</a></h3>
+<div class="spec">
+<p><tt>request(URL, Method, Hdrs, Body::RequestBody, Timeout, Options) -&gt; Result</tt>
+<ul class="definitions"><li><tt>URL = string()</tt></li>
+<li><tt>Method = string() | atom()</tt></li>
+<li><tt>Hdrs = [{Header, Value}]</tt></li>
+<li><tt>Header = string() | binary() | atom()</tt></li>
+<li><tt>Value = string() | binary()</tt></li>
+<li><tt>RequestBody = <a href="#type-iolist">iolist()</a></tt></li>
+<li><tt>Timeout = integer() | infinity</tt></li>
+<li><tt>Options = [Option]</tt></li>
+<li><tt>Option = {connect_timeout, Milliseconds | infinity} | {send_retry, integer()} | {partial_upload, WindowSize}</tt></li>
+<li><tt>Milliseconds = integer()</tt></li>
+<li><tt>WindowSize = integer() | infinity</tt></li>
+<li><tt>Result = {ok, {{StatusCode, ReasonPhrase}, Hdrs, ResponseBody}} | {ok, UploadState} | {error, Reason}</tt></li>
+<li><tt>StatusCode = integer()</tt></li>
+<li><tt>ReasonPhrase = string()</tt></li>
+<li><tt>ResponseBody = binary()</tt></li>
+<li><tt>Reason = connection_closed | connect_timeout | timeout</tt></li>
+</ul></p>
+</div><p>Sends a request with a body.
+  Would be the same as calling <pre>
+  {Host, Port, Path, Ssl} = lhttpc_lib:parse_url(URL),
+  request(Host, Port, Path, Ssl, Method, Hdrs, Body, Timeout, Options).
+  </pre>
+ 
+  <code>URL</code> is expected to be a valid URL:
+  <code>scheme://host[:port][/path]</code>.</p>
+
+<h3 class="function"><a name="request-9">request/9</a></h3>
+<div class="spec">
+<p><tt>request(Host, Port, Ssl, Path, Method, Hdrs, Body::RequestBody, Timeout, Options) -&gt; Result</tt>
+<ul class="definitions"><li><tt>Host = string()</tt></li>
+<li><tt>Port = integer()</tt></li>
+<li><tt>Ssl = <a href="#type-boolean">boolean()</a></tt></li>
+<li><tt>Path = string()</tt></li>
+<li><tt>Method = string() | atom()</tt></li>
+<li><tt>Hdrs = [{Header, Value}]</tt></li>
+<li><tt>Header = string() | binary() | atom()</tt></li>
+<li><tt>Value = string() | binary()</tt></li>
+<li><tt>RequestBody = <a href="#type-iolist">iolist()</a></tt></li>
+<li><tt>Timeout = integer() | infinity</tt></li>
+<li><tt>Options = [Option]</tt></li>
+<li><tt>Option = {connect_timeout, Milliseconds | infinity} | {send_retry, integer()} | {partial_upload, WindowSize} | {partial_download, PartialDowloadOptions}</tt></li>
+<li><tt>Milliseconds = integer()</tt></li>
+<li><tt>WindowSize = integer()</tt></li>
+<li><tt>PartialDownloadOptions = [PartialDownloadOption]</tt></li>
+<li><tt>PartialDowloadOption = {window_size, WindowSize} | {part_size, PartSize}</tt></li>
+<li><tt>PartSize = integer()</tt></li>
+<li><tt>Result = {ok, {{StatusCode, ReasonPhrase}, Hdrs, ResponseBody}} | {error, Reason}</tt></li>
+<li><tt>StatusCode = integer()</tt></li>
+<li><tt>ReasonPhrase = string()</tt></li>
+<li><tt>ResponseBody = binary() | pid() | undefined</tt></li>
+<li><tt>Reason = connection_closed | connect_timeout | timeout</tt></li>
+</ul></p>
+</div><p><p>Sends a request with a body.</p>
+ 
+  <p>Instead of building and parsing URLs the target server is specified with
+  a host, port, weither SSL should be used or not and a path on the server.
+  For instance, if you want to request http://example.com/foobar you would
+  use the following:<br>
+  <code>Host</code> = <code>"example.com"</code><br>
+  <code>Port</code> = <code>80</code><br>
+  <code>Ssl</code> = <code>false</code><br>
+  <code>Path</code> = <code>"/foobar"</code><br>
+  <code>Path</code> must begin with a forward slash <code>/</code>.</p>
+ 
+  <p><code>Method</code> is either a string, stating the HTTP method exactly as in the
+  protocol, i.e: <code>"POST"</code> or <code>"GET"</code>. It could also be an atom, which is
+  then made in to uppercase, if it isn't already.
+  <code>Hdrs</code> is a list of headers to send. Mandatory headers such as
+  <code>Host</code>, <code>Content-Length</code> or <code>Transfer-Encoding</code> (for some requests)
+  are added.
+  <code>Body</code> is the entity to send in the request. Please don't include entity
+  bodies where there shouldn't be any (such as for <code>GET</code>).
+  <code>Timeout</code> is the timeout for the request in milliseconds.
+  <code>Options</code> is a list of options.</p>
+ 
+  <p>Options:</p>
+ 
+  <p><code>{connect_timeout, Milliseconds}</code> specifies how many milliseconds the  
+client can spend trying to establish a connection to the server. This  
+doesn't affect the overall request timeout. However, if it's longer than  
+the overall timeout it will be ignored. Also note that the TCP layer my  
+choose to give up earlier than the connect timeout, in which case the  
+client will also give up. The default value is infinity, which means that  
+it will either give up when the TCP stack gives up, or when the overall  
+request timeout is reached.</p>
+ 
+  <p><code>{send_retry, N}</code> specifies how many times the client should retry
+  sending a request if the connection is closed after the data has been
+  sent. The default value is <code>1</code>. If <code>{partial_upload, WindowSize}</code>  
+(see below) is specified, the client cannot retry after the first part  
+of the body has been sent since it doesn't keep the whole entitity body  
+in memory.</p>
+ 
+  <p><code>{partial_upload, WindowSize}</code> means that the body will be supplied in
+  parts to the client by the calling process. The <code>WindowSize</code> specifies how
+  many parts can be sent to the process controlling the socket before waiting
+  for an acknowledgement. This is to create a kind of internal flow control
+  if the network is slow and the process is blocked by the TCP stack. Flow
+  control is disabled if <code>WindowSize</code> is <code>infinity</code>. If <code>WindowSize</code> is an
+  integer, it must be &gt;= 0.  If partial upload is specified and no
+  <code>Content-Length</code> is specified in <code>Hdrs</code> the client will use chunked
+  transfer encoding to send the entity body. If a content length is
+  specified, this must be the total size of the entity body.
+  The call to <a href="#request-6"><code>request/6</code></a> will return <code>{ok, UploadState}</code>. The
+  <code>UploadState</code> is supposed to be used as the first argument to the <a href="#send_body_part-2"><code>send_body_part/2</code></a> or <a href="#send_body_part-3"><code>send_body_part/3</code></a> functions to send body parts.  
+Partial upload is intended to avoid keeping large request bodies in  
+memory but can also be used when the complete size of the body isn't known  
+when the request is started.</p>
+ 
+  <code>{partial_download, PartialDownloadOptions}</code> means that the response body
+  will be supplied in parts by the client to the calling process. The partial
+  download option <code>{window_size, WindowSize}</code> specifies how many part will be
+  sent to the calling process before waiting for an acknowledgement. This is
+  to create a kind of internal flow control if the calling process is slow to
+  process the body part and the network is considerably faster. Flow control
+  is disabled if <code>WindowSize</code> is <code>infinity</code>. If <code>WindowSize</code> is an integer it
+  must be &gt;=0. The partial download option <code>{part_size, PartSize}</code> specifies
+  the size the body parts should come in. Note however that if the body size
+  is not determinable (e.g entity body is termintated by closing the socket)
+  it will be delivered in pieces as it is read from the wire. There is no
+  caching of the body parts until the amount reaches body size. If the body
+  size is bounded (e.g <code>Content-Length</code> specified or
+  <code>Transfer-Encoding: chunked</code> specified) it will be delivered in <code>PartSize</code>
+  pieces. Note however that the last piece might be smaller than <code>PartSize</code>.
+  Size bounded entity bodies are handled the same way as unbounded ones if
+  <code>PartSize</code> is <code>infinity</code>. If <code>PartSize</code> is integer it must be &gt;= 0.
+  If <code>{partial_download, PartialDownloadOptions}</code> is specified the
+  <code>ResponseBody</code> is going to be a <code>pid()</code> unless the response has no body
+  (for example in case of <code>HEAD</code> requests). In that case it is going to be
+  <code>undefined</code>.</p>
+
+<h3 class="function"><a name="send_body_part-2">send_body_part/2</a></h3>
+<div class="spec">
+<p><tt>send_body_part(UploadState, BodyPart) -&gt; Result</tt>
+<ul class="definitions"><li><tt>BodyPart = <a href="#type-iolist">iolist()</a> | binary()</tt></li>
+<li><tt>Timeout = integer() | infinity</tt></li>
+<li><tt>Result = {error, Reason} | UploadState</tt></li>
+<li><tt>Reason = connection_closed | connect_timeout | timeout</tt></li>
+</ul></p>
+</div><p>Sends a body part to an ongoing request when
+  <code>{partial_upload, WindowSize}</code> is used. The default timeout, <code>infinity</code>
+  will be used. Notice that if <code>WindowSize</code> is infinity, this call will never
+  block.
+  Would be the same as calling
+  <code>send_body_part(UploadState, BodyPart, infinity)</code>.</p>
+
+<h3 class="function"><a name="send_body_part-3">send_body_part/3</a></h3>
+<div class="spec">
+<p><tt>send_body_part(UploadState, BodyPart, Timeout) -&gt; Result</tt>
+<ul class="definitions"><li><tt>BodyPart = <a href="#type-iolist">iolist()</a> | binary()</tt></li>
+<li><tt>Timeout = integer() | infinity</tt></li>
+<li><tt>Result = {error, Reason} | UploadState</tt></li>
+<li><tt>Reason = connection_closed | connect_timeout | timeout</tt></li>
+</ul></p>
+</div><p><p>Sends a body part to an ongoing request when
+  <code>{partial_upload, WindowSize}</code> is used.
+  <code>Timeout</code> is the timeout for the request in milliseconds.</p>
+ 
+  <p>If the window size reaches 0 the call will block for at maximum Timeout
+  milliseconds. If there is no acknowledgement received during that time the
+  the request is cancelled and <code>{error, timeout}</code> is returned.</p>
+ 
+  <p>As long as the window size is larger than 0 the function will return  
+immediately after sending the body part to the request handling process.</p>
+ 
+  The <code>BodyPart</code> <code>http_eob</code> signals an end of the entity body, the request
+  is considered sent and the response will be read from the socket. If
+  there is no response within <code>Timeout</code> milliseconds, the request is
+  canceled and <code>{error, timeout}</code> is returned.</p>
+
+<h3 class="function"><a name="send_trailers-2">send_trailers/2</a></h3>
+<div class="spec">
+<p><tt>send_trailers(UploadState, Trailers) -&gt; Result</tt>
+<ul class="definitions"><li><tt>Header = string() | binary() | atom()</tt></li>
+<li><tt>Value = string() | binary()</tt></li>
+<li><tt>Result = {ok, {{StatusCode, ReasonPhrase}, Hdrs, ResponseBody}} | {error, Reason}</tt></li>
+<li><tt>Reason = connection_closed | connect_timeout | timeout</tt></li>
+</ul></p>
+</div><p>Sends trailers to an ongoing request when <code>{partial_upload,
+  WindowSize}</code> is used and no <code>Content-Length</code> was specified. The default
+  timout <code>infinity</code> will be used. Note that after this the request is
+  considered complete and the response will be read from the socket.
+  Would be the same as calling
+  <code>send_trailers(UploadState, BodyPart, infinity)</code>.</p>
+
+<h3 class="function"><a name="send_trailers-3">send_trailers/3</a></h3>
+<div class="spec">
+<p><tt>send_trailers(UploadState, Trailers, Timeout) -&gt; Result</tt>
+<ul class="definitions"><li><tt>Trailers = [{Header, Value}]</tt></li>
+<li><tt>Header = string() | binary() | atom()</tt></li>
+<li><tt>Value = string() | binary()</tt></li>
+<li><tt>Timeout = integer() | infinity</tt></li>
+<li><tt>Result = {ok, {{StatusCode, ReasonPhrase}, Hdrs, ResponseBody}} | {error, Reason}</tt></li>
+<li><tt>Reason = connection_closed | connect_timeout | timeout</tt></li>
+</ul></p>
+</div><p><p>Sends trailers to an ongoing request when
+  <code>{partial_upload, WindowSize}</code> is used and no <code>Content-Length</code> was
+  specified.
+  <code>Timeout</code> is the timeout for sending the trailers and reading the  
+response in milliseconds.</p>
+ 
+  Sending trailers also signals the end of the entity body, which means
+  that no more body parts, or trailers can be sent and the response to the
+  request will be read from the socket. If no response is received within
+  <code>Timeout</code> milliseconds the request is canceled and <code>{error, timeout}</code> is
+  returned.</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 19 2009, 21:24:23.</i></p>
+</body>
+</html>

deps/lhttpc/doc/lhttpc_manager.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module lhttpc_manager</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module lhttpc_manager</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Connection manager for the HTTP client.
+
+<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
+<p><b>Authors:</b> Oscar Hellström (<a href="mailto:oscar@erlang-consulting.com"><tt>oscar@erlang-consulting.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Connection manager for the HTTP client.
+   This gen_server is responsible for keeping track of persistent
+   connections to HTTP servers. The only interesting API is
+   <code>connection_count/0</code> and <code>connection_count/1</code>.
+   The gen_server is supposed to be started by a supervisor, which is
+   normally <a href="lhttpc_sup.html"><code>lhttpc_sup</code></a>.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#connection_count-0">connection_count/0</a></td><td>Returns the total number of active connections maintained by the
+  httpc manager.</td></tr>
+<tr><td valign="top"><a href="#connection_count-1">connection_count/1</a></td><td>Returns the number of active connections to the specific
+  <code>Destination</code> maintained by the httpc manager.</td></tr>
+<tr><td valign="top"><a href="#start_link-0">start_link/0</a></td><td>Starts and link to the gen server.</td></tr>
+<tr><td valign="top"><a href="#update_connection_timeout-1">update_connection_timeout/1</a></td><td>Updates the timeout for persistent connections.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="connection_count-0">connection_count/0</a></h3>
+<div class="spec">
+<p><tt>connection_count() -&gt; Count</tt>
+<ul class="definitions"><li><tt>Count = integer()</tt></li>
+</ul></p>
+</div><p>Returns the total number of active connections maintained by the
+  httpc manager.</p>
+
+<h3 class="function"><a name="connection_count-1">connection_count/1</a></h3>
+<div class="spec">
+<p><tt>connection_count(X1::Destination) -&gt; Count</tt>
+<ul class="definitions"><li><tt>Destination = {Host, Port, Ssl}</tt></li>
+<li><tt>Host = string()</tt></li>
+<li><tt>Port = integer()</tt></li>
+<li><tt>Ssl = bool()</tt></li>
+<li><tt>Count = integer()</tt></li>
+</ul></p>
+</div><p>Returns the number of active connections to the specific
+  <code>Destination</code> maintained by the httpc manager.</p>
+
+<h3 class="function"><a name="start_link-0">start_link/0</a></h3>
+<div class="spec">
+<p><tt>start_link() -&gt; {ok, pid()}</tt></p>
+</div><p>Starts and link to the gen server.
+  This is normally called by a supervisor.</p>
+
+<h3 class="function"><a name="update_connection_timeout-1">update_connection_timeout/1</a></h3>
+<div class="spec">
+<p><tt>update_connection_timeout(Milliseconds::Timeout) -&gt; ok</tt>
+<ul class="definitions"><li><tt>Timeout = <a href="#type-intetger">intetger()</a></tt></li>
+</ul></p>
+</div><p>Updates the timeout for persistent connections.
+  This will only affect future sockets handed to the manager. The sockets
+  already managed will keep their timers.</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 19 2009, 21:24:23.</i></p>
+</body>
+</html>

deps/lhttpc/doc/lhttpc_sup.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module lhttpc_sup</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module lhttpc_sup</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Top supervisor for the lhttpc application.
+
+<p><b>Behaviours:</b> <a href="supervisor.html"><tt>supervisor</tt></a>.</p>
+<p><b>Authors:</b> Oscar Hellström (<a href="mailto:oscar@erlang-consulting.com"><tt>oscar@erlang-consulting.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Top supervisor for the lhttpc application.
+   This is normally started by the application behaviour implemented in
+   <a href="lhttpc.html"><code>lhttpc</code></a>.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#start_link-0">start_link/0</a></td><td>Starts and links to the supervisor.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="start_link-0">start_link/0</a></h3>
+<div class="spec">
+<p><tt>start_link() -&gt; {ok, pid()} | {error, Reason}</tt>
+<ul class="definitions"><li><tt>Reason = atom()</tt></li>
+</ul></p>
+</div><p>Starts and links to the supervisor.
+  This is normally called from an application behaviour or from another
+  supervisor.</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 19 2009, 21:24:23.</i></p>
+</body>
+</html>

deps/lhttpc/doc/modules-frame.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>The lhttpc application</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<h2 class="indextitle">Modules</h2>
+<table width="100%" border="0" summary="list of modules">
+<tr><td><a href="lhttpc.html" target="overviewFrame" class="module">lhttpc</a></td></tr>
+<tr><td><a href="lhttpc_manager.html" target="overviewFrame" class="module">lhttpc_manager</a></td></tr>
+<tr><td><a href="lhttpc_sup.html" target="overviewFrame" class="module">lhttpc_sup</a></td></tr></table>
+</body>
+</html>

deps/lhttpc/doc/overview-summary.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>The lhttpc application</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<h1>The lhttpc application</h1>
+<p><b>Authors:</b> Oscar Hellström (<a href="mailto:oscar@erlang-consulting.com"><tt>oscar@erlang-consulting.com</tt></a>).</p>
+<p>A lightweight HTTP client.
+The only functions of much interest right now are <a href="lhttpc.html#request-4"><code>lhttpc:request/4</code></a>, <a href="lhttpc.html#request-5"><code>lhttpc:request/5</code></a> and <a href="lhttpc.html#request-6"><code>lhttpc:request/6</code></a>.</p>
+
+<h1>Configuration</h1>
+<h2><code>connection_timeout</code></h2><p>
+The maximum time (in milliseconds) the client will keep a TCP connection
+open to a server.</p>
+
+<h1>Current limitations</h1>
+<ul>
+    <li>No support for chunked downloading</li>
+    <li>No support for HTTP redirects</li>
+    <li>No support for "streaming" the response body to a process</li>
+</ul>
+<hr>
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 19 2009, 21:24:23.</i></p>
+</body>
+</html>

deps/lhttpc/doc/overview.edoc

+@author Oscar Hellström <oscar@erlang-consulting.com>
+@doc A lightweight HTTP client.
+The only functions of much interest right now are {@link
+lhttpc:request/4}, {@link lhttpc:request/5} and {@link lhttpc:request/6}.
+
+<h1>Configuration</h1>
+<h2>`connection_timeout'</h2>
+The maximum time (in milliseconds) the client will keep a TCP connection
+open to a server.
+
+<h1>Current limitations</h1>
+<ul>
+    <li>No support for chunked downloading</li>
+    <li>No support for HTTP redirects</li>
+    <li>No support for "streaming" the response body to a process</li>
+</ul>
+@end

deps/lhttpc/doc/packages-frame.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>The lhttpc application</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<h2 class="indextitle">Packages</h2>
+<table width="100%" border="0" summary="list of packages"></table>
+</body>
+</html>

deps/lhttpc/doc/stylesheet.css

+/* standard EDoc style sheet */
+body {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+      	margin-left: .25in;
+       	margin-right: .2in;
+       	margin-top: 0.2in;
+       	margin-bottom: 0.2in;
+       	color: #000000;
+       	background-color: #ffffff;
+}
+h1,h2 {
+ 	margin-left: -0.2in;
+}
+div.navbar {
+	background-color: #add8e6;
+	padding: 0.2em;
+}
+h2.indextitle {
+	padding: 0.4em;
+	background-color: #add8e6;
+}
+h3.function,h3.typedecl {
+	background-color: #add8e6;
+ 	padding-left: 1em;
+}
+div.spec {
+ 	margin-left: 2em;
+	background-color: #eeeeee;
+}
+a.module,a.package {
+	text-decoration:none
+}
+a.module:hover,a.package:hover {
+	background-color: #eeeeee;
+}
+ul.definitions {
+	list-style-type: none;
+}
+ul.index {
+	list-style-type: none;
+	background-color: #eeeeee;
+}
+
+/*
+ * Minor style tweaks
+ */
+ul {
+	list-style-type: square;
+}
+table {
+	border-collapse: collapse;
+}
+td {
+	padding: 3
+}

deps/lhttpc/src/lhttpc.erl

     erlang:error({bad_options, Errors}).
 
 -spec verify_partial_download(options(), options()) -> options().
+
+verify_partial_download([{window_size, infinity} | Options], Errors)->
+    verify_partial_download(Options, Errors);
 verify_partial_download([{window_size, Size} | Options], Errors) when
         is_integer(Size), Size >= 0 ->
     verify_partial_download(Options, Errors);

doc/couchbeam.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Benoît Chesneau.</p>
+
+<p><b>Behaviours:</b> <a href="application.html"><tt>application</tt></a>.</p>
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>).</p>
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#json_decode-1">json_decode/1</a></td><td>decode from json string.</td></tr>
+<tr><td valign="top"><a href="#json_encode-1">json_encode/1</a></td><td>Encode to json.</td></tr>
+<tr><td valign="top"><a href="#start-0">start/0</a></td><td>Start applications which exmpp depends on then start exmpp.</td></tr>
+<tr><td valign="top"><a href="#version-0">version/0</a></td><td>Return the version of the application.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="json_decode-1">json_decode/1</a></h3>
+<div class="spec">
+<p><tt>json_decode(V::<a href="#type-iolist">iolist()</a>) -&gt; <a href="#type-json_term">json_term()</a></tt></p>
+</div><p>decode from json string</p>
+
+<h3 class="function"><a name="json_encode-1">json_encode/1</a></h3>
+<div class="spec">
+<p><tt>json_encode(V::<a href="#type-json_term">json_term()</a>) -&gt; <a href="#type-iolist">iolist()</a></tt></p>
+</div><p>Encode to json</p>
+
+<h3 class="function"><a name="start-0">start/0</a></h3>
+<div class="spec">
+<p><tt>start() -&gt; ok</tt></p>
+</div><p>Start applications which exmpp depends on then start exmpp.</p>
+
+<h3 class="function"><a name="version-0">version/0</a></h3>
+<div class="spec">
+<p><tt>version() -&gt; Version</tt>
+<ul class="definitions"><li><tt>Version = string()</tt></li>
+</ul></p>
+</div><p>Return the version of the application.</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:56.</i></p>
+</body>
+</html>

doc/couchbeam_db.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_db</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_db</h1>
+<ul class="index"><li><a href="#types">Data Types</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Benoît Chesneau.</p>
+
+<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>).</p>
+
+<h2><a name="types">Data Types</a></h2>
+
+<h3 class="typedecl"><a name="type-attachment_content">attachment_content()</a></h3>
+<p><tt>attachment_content() = string() | binary() | <a href="#type-fun_arity_0">fun_arity_0()</a> | {<a href="#type-fun_arity_1">fun_arity_1()</a>, <a href="#type-initial_state">initial_state()</a>}</tt></p>
+
+
+<h3 class="typedecl"><a name="type-database">database()</a></h3>
+<p><tt>database() = atom() | pid()</tt></p>
+
+
+<h3 class="typedecl"><a name="type-iodata">iodata()</a></h3>
+<p><tt>iodata() = <a href="#type-iolist">iolist()</a> | binary()</tt></p>
+
+
+<h3 class="typedecl"><a name="type-iolist">iolist()</a></h3>
+<p><tt>iolist() = [char() | binary() | <a href="#type-iolist">iolist()</a>]</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_array">json_array()</a></h3>
+<p><tt>json_array() = [<a href="#type-json_term">json_term()</a>]</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_number">json_number()</a></h3>
+<p><tt>json_number() = integer() | float()</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_object">json_object()</a></h3>
+<p><tt>json_object() = {struct, [{<a href="#type-json_string">json_string()</a>, <a href="#type-json_term">json_term()</a>}]}</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_string">json_string()</a></h3>
+<p><tt>json_string() = atom() | binary()</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_term">json_term()</a></h3>
+<p><tt>json_term() = <a href="#type-json_string">json_string()</a> | <a href="#type-json_number">json_number()</a> | <a href="#type-json_array">json_array()</a> | <a href="#type-json_object">json_object()</a></tt></p>
+
+
+<h3 class="typedecl"><a name="type-node_info">node_info()</a></h3>
+<p><tt>node_info() = {Host::string(), Port::<a href="#type-int">int()</a>}</tt></p>
+
+
+<h3 class="typedecl"><a name="type-view_params">view_params()</a></h3>
+<p><tt>view_params() = <a href="#type-proplist">proplist()</a></tt></p>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#all_docs-2">all_docs/2</a></td><td>This method has the same behavior as a view.</td></tr>
+<tr><td valign="top"><a href="#all_docs_by_seq-2">all_docs_by_seq/2</a></td><td>(<em>Deprecated</em>.) This method has the same behavior as a view.</td></tr>
+<tr><td valign="top"><a href="#close-2">close/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#create-2">create/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#delete-2">delete/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#delete_attachment-3">delete_attachment/3</a></td><td>delete attachment.</td></tr>
+<tr><td valign="top"><a href="#delete_doc-2">delete_doc/2</a></td><td>delete a document.</td></tr>
+<tr><td valign="top"><a href="#delete_docs-2">delete_docs/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#delete_docs-3">delete_docs/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#fetch_attachment-3">fetch_attachment/3</a></td><td>fetch attachment.</td></tr>
+<tr><td valign="top"><a href="#fetch_attachment-4">fetch_attachment/4</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#info-1">info/1</a></td><td>fetch information of Database.</td></tr>
+<tr><td valign="top"><a href="#open-2">open/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#open_doc-2">open_doc/2</a></td><td>open a doc with DocId.</td></tr>
+<tr><td valign="top"><a href="#open_doc-3">open_doc/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#open_or_create-2">open_or_create/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#put_attachment-5">put_attachment/5</a></td><td>put attachment attachment, It will try to guess mimetype.</td></tr>
+<tr><td valign="top"><a href="#put_attachment-6">put_attachment/6</a></td><td>put attachment attachment with ContentType fixed.</td></tr>
+<tr><td valign="top"><a href="#query_view-3">query_view/3</a></td><td>query a view and return results depending on params.</td></tr>
+<tr><td valign="top"><a href="#save_doc-2">save_doc/2</a></td><td>save a do with DocId.</td></tr>
+<tr><td valign="top"><a href="#save_doc-3">save_doc/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#save_docs-2">save_docs/2</a></td><td>bulk update.</td></tr>
+<tr><td valign="top"><a href="#save_docs-3">save_docs/3</a></td><td>bulk update with options, currently support only all_or_nothing.</td></tr>
+<tr><td valign="top"><a href="#suscribe-2">suscribe/2</a></td><td>suscribe to db changes.</td></tr>
+<tr><td valign="top"><a href="#suscribe-3">suscribe/3</a></td><td>suscribe to db changes, wait for changes heartbeat.</td></tr>
+<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="all_docs-2">all_docs/2</a></h3>
+<div class="spec">
+<p><tt>all_docs(Db::<a href="#type-database">database()</a>, Params::list()) -&gt; <a href="#type-json_object">json_object()</a></tt></p>
+</div><p>This method has the same behavior as a view. Return all docs</p>
+
+<h3 class="function"><a name="all_docs_by_seq-2">all_docs_by_seq/2</a></h3>
+<div class="spec">
+<p><tt>all_docs_by_seq(Db::<a href="#type-database">database()</a>, Params::list()) -&gt; <a href="#type-json_object">json_object()</a></tt></p>
+</div><p><b>This function is deprecated:</b>  This feature don't exist anymore in couchdb 0.11, use suscribe() instead.</p>
+<p>This method has the same behavior as a view.
+  Return an updated list of all documents.</p>
+
+<h3 class="function"><a name="close-2">close/2</a></h3>
+<div class="spec">
+<p><tt>close(ConnectionPid, Db) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
+<div class="spec">
+<p><tt>code_change(OldVsn, State, Extra) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="create-2">create/2</a></h3>
+<div class="spec">
+<p><tt>create(ConnectionPid, DbName) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="delete-2">delete/2</a></h3>
+<div class="spec">
+<p><tt>delete(ConnectionPid, DbName) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="delete_attachment-3">delete_attachment/3</a></h3>
+<div class="spec">
+<p><tt>delete_attachment(Db::<a href="#type-database">database()</a>, Doc::<a href="#type-json_obj">json_obj()</a>, AName::string()) -&gt; <a href="#type-json_obj">json_obj()</a></tt></p>
+</div><p>delete attachment</p>
+
+<h3 class="function"><a name="delete_doc-2">delete_doc/2</a></h3>
+<div class="spec">
+<p><tt>delete_doc(Db::<a href="#type-database">database()</a>, Doc::<a href="#type-json_object">json_object()</a>) -&gt; <a href="#type-json_object">json_object()</a></tt></p>
+</div><p>delete a document</p>
+
+<h3 class="function"><a name="delete_docs-2">delete_docs/2</a></h3>
+<div class="spec">
+<p><tt>delete_docs(Db, Docs) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="delete_docs-3">delete_docs/3</a></h3>
+<div class="spec">
+<p><tt>delete_docs(Db, Docs, Opts) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="fetch_attachment-3">fetch_attachment/3</a></h3>
+<div class="spec">
+<p><tt>fetch_attachment(Db::<a href="#type-database">database()</a>, Doc::<a href="#type-json_obj">json_obj()</a>, AName::string()) -&gt; <a href="#type-iolist">iolist()</a></tt></p>
+</div><p>fetch attachment</p>
+
+<h3 class="function"><a name="fetch_attachment-4">fetch_attachment/4</a></h3>
+<div class="spec">
+<p><tt>fetch_attachment(Db, Doc, AName, Opts) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_call-3">handle_call/3</a></h3>
+<div class="spec">
+<p><tt>handle_call(X1, From, Db) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
+<div class="spec">
+<p><tt>handle_cast(Msg, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
+<div class="spec">
+<p><tt>handle_info(Msg, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="info-1">info/1</a></h3>
+<div class="spec">
+<p><tt>info(Db::<a href="#type-database">database()</a>) -&gt; list()</tt></p>
+</div><p>fetch information of Database</p>
+
+<h3 class="function"><a name="open-2">open/2</a></h3>
+<div class="spec">
+<p><tt>open(ConnectionPid, DbName) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="open_doc-2">open_doc/2</a></h3>
+<div class="spec">
+<p><tt>open_doc(Db::<a href="#type-database">database()</a>, DocId::string()) -&gt; <a href="#type-json_object">json_object()</a></tt></p>
+</div><p>open a doc with DocId</p>
+
+<h3 class="function"><a name="open_doc-3">open_doc/3</a></h3>
+<div class="spec">
+<p><tt>open_doc(Db, DocId, Params) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="open_or_create-2">open_or_create/2</a></h3>
+<div class="spec">
+<p><tt>open_or_create(ConnectionPid, DbName) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="put_attachment-5">put_attachment/5</a></h3>
+<div class="spec">
+<p><tt>put_attachment(Db::<a href="#type-database">database()</a>, Doc::<a href="#type-json_obj">json_obj()</a>, Content::<a href="#type-attachment_content">attachment_content()</a>, AName::string(), Length::string()) -&gt; <a href="#type-json_obj">json_obj()</a></tt></p>
+</div><p>put attachment attachment, It will try to guess mimetype</p>
+
+<h3 class="function"><a name="put_attachment-6">put_attachment/6</a></h3>
+<div class="spec">
+<p><tt>put_attachment(Db::<a href="#type-database">database()</a>, Doc::<a href="#type-json_obj">json_obj()</a>, Content::<a href="#type-attachment_content">attachment_content()</a>, AName::string(), Length::string(), ContentType::string()) -&gt; <a href="#type-json_obj">json_obj()</a></tt></p>
+</div><p>put attachment attachment with ContentType fixed.</p>
+
+<h3 class="function"><a name="query_view-3">query_view/3</a></h3>
+<div class="spec">
+<p><tt>query_view(Db::<a href="#type-database">database()</a>, ViewName::<a href="#type-view_name">view_name()</a>, Params::<a href="#type-view_params">view_params()</a>) -&gt; <a href="#type-json_object">json_object()</a></tt></p>
+</div><p>query a view and return results depending on params</p>
+
+<h3 class="function"><a name="save_doc-2">save_doc/2</a></h3>
+<div class="spec">
+<p><tt>save_doc(Db::<a href="#type-database">database()</a>, Doc::<a href="#type-json_object">json_object()</a>) -&gt; <a href="#type-json_object">json_object()</a></tt></p>
+</div><p>save a do with DocId.</p>
+
+<h3 class="function"><a name="save_doc-3">save_doc/3</a></h3>
+<div class="spec">
+<p><tt>save_doc(Db, Doc, Params) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="save_docs-2">save_docs/2</a></h3>
+<div class="spec">
+<p><tt>save_docs(Db::<a href="#type-database">database()</a>, Docs::<a href="#type-json_array">json_array()</a>) -&gt; <a href="#type-json_object">json_object()</a></tt></p>
+</div><p>bulk update</p>
+
+<h3 class="function"><a name="save_docs-3">save_docs/3</a></h3>
+<div class="spec">
+<p><tt>save_docs(Db::<a href="#type-database">database()</a>, Docs::<a href="#type-json_array">json_array()</a>, Opts::<a href="#type-lists">lists()</a>) -&gt; <a href="#type-json_object">json_object()</a></tt></p>
+</div><p>bulk update with options, currently support only all_or_nothing.</p>
+
+<h3 class="function"><a name="suscribe-2">suscribe/2</a></h3>
+<div class="spec">
+<p><tt>suscribe(Db::<a href="#type-database">database()</a>, Consumer::pid()) -&gt; pid()</tt></p>
+</div><p>suscribe to db changes</p>
+
+<h3 class="function"><a name="suscribe-3">suscribe/3</a></h3>
+<div class="spec">
+<p><tt>suscribe(Db, Consumer, Options) -&gt; Result</tt>
+<ul class="definitions"><li><tt>Db = <a href="#type-database">database()</a></tt></li>
+<li><tt>Consumer = pid()</tt></li>
+<li><tt>Options = ChangeOptions</tt></li>
+<li><tt>Result = pid()</tt></li>
+<li><tt>Options = [ChangeOption]</tt></li>
+<li><tt>ChangeOption = {heartbeat, integer | string} | {timeout, integer()}</tt></li>
+</ul></p>
+</div><p>suscribe to db changes, wait for changes heartbeat</p>
+
+<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
+<div class="spec">
+<p><tt>terminate(Reason, State) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_deps.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_deps</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_deps</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Ensure that the relatively-installed dependencies are on the code
+       loading path, and locate resources relative
+       to this application's path.
+
+
+<h2><a name="description">Description</a></h2>Ensure that the relatively-installed dependencies are on the code
+       loading path, and locate resources relative
+       to this application's path.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#deps_on_path-0">deps_on_path/0</a></td><td>List of project dependencies on the path.</td></tr>
+<tr><td valign="top"><a href="#ensure-0">ensure/0</a></td><td>Ensure that the ebin and include paths for dependencies of
+       this application are on the code path.</td></tr>
+<tr><td valign="top"><a href="#ensure-1">ensure/1</a></td><td>Ensure that all ebin and include paths for dependencies
+       of the application for Module are on the code path.</td></tr>
+<tr><td valign="top"><a href="#get_base_dir-0">get_base_dir/0</a></td><td>Return the application directory for this application.</td></tr>
+<tr><td valign="top"><a href="#get_base_dir-1">get_base_dir/1</a></td><td>Return the application directory for Module.</td></tr>
+<tr><td valign="top"><a href="#local_path-1">local_path/1</a></td><td>Return an application-relative directory for this application.</td></tr>
+<tr><td valign="top"><a href="#local_path-2">local_path/2</a></td><td>Return an application-relative directory from Module's application.</td></tr>
+<tr><td valign="top"><a href="#new_siblings-1">new_siblings/1</a></td><td>Find new siblings paths relative to Module that aren't already on the
+       code path.</td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="deps_on_path-0">deps_on_path/0</a></h3>
+<div class="spec">
+<p><tt>deps_on_path() -&gt; [ProjNameAndVers]</tt></p>
+</div><p>List of project dependencies on the path.</p>
+
+<h3 class="function"><a name="ensure-0">ensure/0</a></h3>
+<div class="spec">
+<p><tt>ensure() -&gt; ok</tt></p>
+</div><p>Ensure that the ebin and include paths for dependencies of
+       this application are on the code path. Equivalent to
+       ensure(?Module).</p>
+
+<h3 class="function"><a name="ensure-1">ensure/1</a></h3>
+<div class="spec">
+<p><tt>ensure(Module) -&gt; ok</tt></p>
+</div><p>Ensure that all ebin and include paths for dependencies
+       of the application for Module are on the code path.</p>
+
+<h3 class="function"><a name="get_base_dir-0">get_base_dir/0</a></h3>
+<div class="spec">
+<p><tt>get_base_dir() -&gt; string()</tt></p>
+</div><p>Return the application directory for this application. Equivalent to
+       get_base_dir(?MODULE).</p>
+
+<h3 class="function"><a name="get_base_dir-1">get_base_dir/1</a></h3>
+<div class="spec">
+<p><tt>get_base_dir(Module) -&gt; string()</tt></p>
+</div><p>Return the application directory for Module. It assumes Module is in
+       a standard OTP layout application in the ebin or src directory.</p>
+
+<h3 class="function"><a name="local_path-1">local_path/1</a></h3>
+<div class="spec">
+<p><tt>local_path(Components) -&gt; string()</tt></p>
+</div><p>Return an application-relative directory for this application.
+       Equivalent to local_path(Components, ?MODULE).</p>
+
+<h3 class="function"><a name="local_path-2">local_path/2</a></h3>
+<div class="spec">
+<p><tt>local_path(Components::[string()], Module) -&gt; string()</tt></p>
+</div><p>Return an application-relative directory from Module's application.</p>
+
+<h3 class="function"><a name="new_siblings-1">new_siblings/1</a></h3>
+<div class="spec">
+<p><tt>new_siblings(Module) -&gt; [Dir]</tt></p>
+</div><p>Find new siblings paths relative to Module that aren't already on the
+       code path.</p>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_manager.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_manager</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_manager</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Manager for couchbeam
+  This gen_server is responsible of maintaining registration of server connections.
+<p>Copyright � 2009 Benoît Chesneau.</p>
+
+<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Manager for couchbeam
+  This gen_server is responsible of maintaining registration of server connections.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#connection_count-0">connection_count/0</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_connection-1">get_connection/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get_db-1">get_db/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#register_connection-2">register_connection/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#register_db-3">register_db/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#unregister_connection-1">unregister_connection/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#unregister_db-1">unregister_db/1</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
+<div class="spec">
+<p><tt>code_change(OldVsn, State, Extra) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="connection_count-0">connection_count/0</a></h3>
+<div class="spec">
+<p><tt>connection_count() -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_connection-1">get_connection/1</a></h3>
+<div class="spec">
+<p><tt>get_connection(Name) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get_db-1">get_db/1</a></h3>
+<div class="spec">
+<p><tt>get_db(Name) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
+<div class="spec">
+<p><tt>handle_cast(Msg, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
+<div class="spec">
+<p><tt>handle_info(Info, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="init-1">init/1</a></h3>
+<div class="spec">
+<p><tt>init(X1) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="register_connection-2">register_connection/2</a></h3>
+<div class="spec">
+<p><tt>register_connection(ConnectionPid, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="register_db-3">register_db/3</a></h3>
+<div class="spec">
+<p><tt>register_db(ServerName, Name, DbPid) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
+<div class="spec">
+<p><tt>terminate(Reason, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="unregister_connection-1">unregister_connection/1</a></h3>
+<div class="spec">
+<p><tt>unregister_connection(Name) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="unregister_db-1">unregister_db/1</a></h3>
+<div class="spec">
+<p><tt>unregister_db(Name) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_mochijson2.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_mochijson2</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_mochijson2</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#types">Data Types</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Yet another JSON (RFC 4627) library for Erlang.
+<p>Copyright � 2007 Mochi Media, Inc.
+ 
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+ 
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+ 
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+  THE SOFTWARE.
+ </p>
+
+<p><b>Authors:</b> Bob Ippolito (<a href="mailto:bob@mochimedia.com"><tt>bob@mochimedia.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2><p>Yet another JSON (RFC 4627) library for Erlang. mochijson2 works       
+with binaries as strings, arrays as lists (without an {array, _})       
+wrapper and it only knows how to decode UTF-8 (and ASCII).</p>
+ 
+  We include mochijson2 from couchdb since it make sense to use CouchDB
+  to this file. We also include mochinum.
+ 
+<h2><a name="types">Data Types</a></h2>
+
+<h3 class="typedecl"><a name="type-iodata">iodata()</a></h3>
+<p><tt>iodata() = <a href="#type-iolist">iolist()</a> | binary()</tt></p>
+
+
+<h3 class="typedecl"><a name="type-iolist">iolist()</a></h3>
+<p><tt>iolist() = [char() | binary() | <a href="#type-iolist">iolist()</a>]</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_array">json_array()</a></h3>
+<p><tt>json_array() = [<a href="#type-json_term">json_term()</a>]</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_number">json_number()</a></h3>
+<p><tt>json_number() = integer() | float()</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_object">json_object()</a></h3>
+<p><tt>json_object() = {struct, [{<a href="#type-json_string">json_string()</a>, <a href="#type-json_term">json_term()</a>}]}</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_string">json_string()</a></h3>
+<p><tt>json_string() = atom | binary()</tt></p>
+
+
+<h3 class="typedecl"><a name="type-json_term">json_term()</a></h3>
+<p><tt>json_term() = <a href="#type-json_string">json_string()</a> | <a href="#type-json_number">json_number()</a> | <a href="#type-json_array">json_array()</a> | <a href="#type-json_object">json_object()</a></tt></p>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#decode-1">decode/1</a></td><td>Decode the given iolist to Erlang terms.</td></tr>
+<tr><td valign="top"><a href="#decoder-1">decoder/1</a></td><td>Create a decoder/1 with the given options.</td></tr>
+<tr><td valign="top"><a href="#encode-1">encode/1</a></td><td>Encode the given as JSON to an iolist.</td></tr>
+<tr><td valign="top"><a href="#encoder-1">encoder/1</a></td><td>Create an encoder/1 with the given options.</td></tr>
+<tr><td valign="top"><a href="#test-0">test/0</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="decode-1">decode/1</a></h3>
+<div class="spec">
+<p><tt>decode(S::<a href="#type-iolist">iolist()</a>) -&gt; <a href="#type-json_term">json_term()</a></tt></p>
+</div><p>Decode the given iolist to Erlang terms.</p>
+
+<h3 class="function"><a name="decoder-1">decoder/1</a></h3>
+<div class="spec">
+<p><tt>decoder(Options::[<a href="#type-decoder_option">decoder_option()</a>]) -&gt; function()</tt></p>
+</div><p>Create a decoder/1 with the given options.</p>
+
+<h3 class="function"><a name="encode-1">encode/1</a></h3>
+<div class="spec">
+<p><tt>encode(Any::<a href="#type-json_term">json_term()</a>) -&gt; <a href="#type-iolist">iolist()</a></tt></p>
+</div><p>Encode the given as JSON to an iolist.</p>
+
+<h3 class="function"><a name="encoder-1">encoder/1</a></h3>
+<div class="spec">
+<p><tt>encoder(Options::[<a href="#type-encoder_option">encoder_option()</a>]) -&gt; function()</tt></p>
+</div><p>Create an encoder/1 with the given options.</p>
+
+<h3 class="function"><a name="test-0">test/0</a></h3>
+<div class="spec">
+<p><tt>test() -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_mochinum.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_mochinum</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_mochinum</h1>
+<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Useful numeric algorithms for floats that cover some deficiencies
+  in the math module.
+<p>Copyright � 2007 Mochi Media, Inc.</p>
+
+<p><b>Authors:</b> Bob Ippolito (<a href="mailto:bob@mochimedia.com"><tt>bob@mochimedia.com</tt></a>).</p>
+
+<h2><a name="description">Description</a></h2>Useful numeric algorithms for floats that cover some deficiencies
+  in the math module. More interesting is digits/1, which implements
+  the algorithm from:
+  http://www.cs.indiana.edu/~burger/fp/index.html
+  See also "Printing Floating-Point Numbers Quickly and Accurately"
+  in Proceedings of the SIGPLAN '96 Conference on Programming Language
+  Design and Implementation.
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#digits-1">digits/1</a></td><td> Returns a string that accurately represents the given integer or float
+        using a conservative amount of digits.</td></tr>
+<tr><td valign="top"><a href="#frexp-1">frexp/1</a></td><td> Return the fractional and exponent part of an IEEE 754 double,
+        equivalent to the libc function of the same name.</td></tr>
+<tr><td valign="top"><a href="#int_ceil-1">int_ceil/1</a></td><td> Return the ceiling of F as an integer.</td></tr>
+<tr><td valign="top"><a href="#int_pow-2">int_pow/2</a></td><td> Moderately efficient way to exponentiate integers.</td></tr>
+<tr><td valign="top"><a href="#test-0">test/0</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="digits-1">digits/1</a></h3>
+<div class="spec">
+<p><tt>digits(N::number()) -&gt; string()</tt></p>
+</div><p> Returns a string that accurately represents the given integer or float
+        using a conservative amount of digits. Great for generating
+        human-readable output, or compact ASCII serializations for floats.</p>
+
+<h3 class="function"><a name="frexp-1">frexp/1</a></h3>
+<div class="spec">
+<p><tt>frexp(F::float()) -&gt; {Frac::float(), Exp::float()}</tt></p>
+</div><p> Return the fractional and exponent part of an IEEE 754 double,
+        equivalent to the libc function of the same name.
+        F = Frac * pow(2, Exp).</p>
+
+<h3 class="function"><a name="int_ceil-1">int_ceil/1</a></h3>
+<div class="spec">
+<p><tt>int_ceil(F::float()) -&gt; integer()</tt></p>
+</div><p> Return the ceiling of F as an integer. The ceiling is defined as
+        F when F == trunc(F);
+        trunc(F) when F &lt; 0;
+        trunc(F) + 1 when F &gt; 0.</p>
+
+<h3 class="function"><a name="int_pow-2">int_pow/2</a></h3>
+<div class="spec">
+<p><tt>int_pow(X::integer(), N::integer()) -&gt; Y::integer()</tt></p>
+</div><p> Moderately efficient way to exponentiate integers.
+        int_pow(10, 2) = 100.</p>
+
+<h3 class="function"><a name="test-0">test/0</a></h3>
+<div class="spec">
+<p><tt>test() -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_resource.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_resource</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_resource</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Benoît Chesneau.</p>
+
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>).</p>
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#delete-5">delete/5</a></td><td></td></tr>
+<tr><td valign="top"><a href="#encode_query-1">encode_query/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#get-5">get/5</a></td><td></td></tr>
+<tr><td valign="top"><a href="#head-5">head/5</a></td><td></td></tr>
+<tr><td valign="top"><a href="#post-6">post/6</a></td><td></td></tr>
+<tr><td valign="top"><a href="#put-6">put/6</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="delete-5">delete/5</a></h3>
+<div class="spec">
+<p><tt>delete(State, Path, Headers, Params, Opts) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="encode_query-1">encode_query/1</a></h3>
+<div class="spec">
+<p><tt>encode_query(Props) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="get-5">get/5</a></h3>
+<div class="spec">
+<p><tt>get(State, Path, Headers, Params, Opts) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="head-5">head/5</a></h3>
+<div class="spec">
+<p><tt>head(State, Path, Headers, Params, Opts) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="post-6">post/6</a></h3>
+<div class="spec">
+<p><tt>post(State, Path, Headers, Params, Body, Opts) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="put-6">put/6</a></h3>
+<div class="spec">
+<p><tt>put(State, Path, Headers, Params, Body, Opts) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_server.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_server</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_server</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Benoît Chesneau.</p>
+
+<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>).</p>
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#all_dbs-1">all_dbs/1</a></td><td>fetch list of all dbs.</td></tr>
+<tr><td valign="top"><a href="#close-1">close/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#close_db-2">close_db/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#create_db-2">create_db/2</a></td><td>create a database with DbName.</td></tr>
+<tr><td valign="top"><a href="#delete_db-2">delete_db/2</a></td><td>delete a database with dbname.</td></tr>
+<tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#info-1">info/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#is_db-2">is_db/2</a></td><td>If database exist in the node returns true.</td></tr>
+<tr><td valign="top"><a href="#open_db-2">open_db/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#open_db-3">open_db/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#open_or_create_db-2">open_or_create_db/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#start_connection-0">start_connection/0</a></td><td></td></tr>
+<tr><td valign="top"><a href="#start_connection-1">start_connection/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#start_connection_link-0">start_connection_link/0</a></td><td></td></tr>
+<tr><td valign="top"><a href="#start_connection_link-1">start_connection_link/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="all_dbs-1">all_dbs/1</a></h3>
+<div class="spec">
+<p><tt>all_dbs(ConnectionId::pid()) -&gt; list()</tt></p>
+</div><p>fetch list of all dbs</p>
+
+<h3 class="function"><a name="close-1">close/1</a></h3>
+<div class="spec">
+<p><tt>close(ConnectionId) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="close_db-2">close_db/2</a></h3>
+<div class="spec">
+<p><tt>close_db(ConnectionPid, DbPid) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
+<div class="spec">
+<p><tt>code_change(OldVsn, State, Extra) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="create_db-2">create_db/2</a></h3>
+<div class="spec">
+<p><tt>create_db(ConnectionId::pid(), DbName::string()) -&gt; ok</tt></p>
+</div><p>create a database with DbName</p>
+
+<h3 class="function"><a name="delete_db-2">delete_db/2</a></h3>
+<div class="spec">
+<p><tt>delete_db(ConnectionId::pid(), DbName::string()) -&gt; ok</tt></p>
+</div><p>delete a database with dbname</p>
+
+<h3 class="function"><a name="handle_call-3">handle_call/3</a></h3>
+<div class="spec">
+<p><tt>handle_call(X1, From, Server_state) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
+<div class="spec">
+<p><tt>handle_cast(Msg, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
+<div class="spec">
+<p><tt>handle_info(Info, Server_state) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="info-1">info/1</a></h3>
+<div class="spec">
+<p><tt>info(ConnectionId) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="is_db-2">is_db/2</a></h3>
+<div class="spec">
+<p><tt>is_db(ConnectionId::pid(), DbName::string()) -&gt; true | false</tt></p>
+</div><p>If database exist in the node returns true</p>
+
+<h3 class="function"><a name="open_db-2">open_db/2</a></h3>
+<div class="spec">
+<p><tt>open_db(ConnectionId, DbName) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="open_db-3">open_db/3</a></h3>
+<div class="spec">
+<p><tt>open_db(ConnectionId, DbName, Register) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="open_or_create_db-2">open_or_create_db/2</a></h3>
+<div class="spec">
+<p><tt>open_or_create_db(ConnectionId, DbName) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="start_connection-0">start_connection/0</a></h3>
+<div class="spec">
+<p><tt>start_connection() -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="start_connection-1">start_connection/1</a></h3>
+<div class="spec">
+<p><tt>start_connection(Params) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="start_connection_link-0">start_connection_link/0</a></h3>
+<div class="spec">
+<p><tt>start_connection_link() -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="start_connection_link-1">start_connection_link/1</a></h3>
+<div class="spec">
+<p><tt>start_connection_link(Params) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
+<div class="spec">
+<p><tt>terminate(Reason, State) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_sup.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_sup</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_sup</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Benoît Chesneau.</p>
+
+<p><b>Behaviours:</b> <a href="supervisor.html"><tt>supervisor</tt></a>.</p>
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>).</p>
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#start_link-0">start_link/0</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="init-1">init/1</a></h3>
+<div class="spec">
+<p><tt>init(X1) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="start_link-0">start_link/0</a></h3>
+<div class="spec">
+<p><tt>start_link() -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_util.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_util</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_util</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Benoît Chesneau.
+ </p>
+
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>), Bob Ippolito (<a href="mailto:bob@mochimedia.com"><tt>bob@mochimedia.com</tt></a>).</p>
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#encodeBase64-1">encodeBase64/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#generate_uuids-1">generate_uuids/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#guess_mime-1">guess_mime/1</a></td><td> Guess the mime type of a file by the extension of its filename.</td></tr>
+<tr><td valign="top"><a href="#join-2">join/2</a></td><td>Join a list of strings together with the given separator
+    string or char.</td></tr>
+<tr><td valign="top"><a href="#new_uuid-0">new_uuid/0</a></td><td></td></tr>
+<tr><td valign="top"><a href="#quote_plus-1">quote_plus/1</a></td><td>URL safe encoding of the given term.</td></tr>
+<tr><td valign="top"><a href="#revjoin-3">revjoin/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#split-2">split/2</a></td><td>split a binary.</td></tr>
+<tr><td valign="top"><a href="#to_digit-1">to_digit/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#to_hex-1">to_hex/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#val-1">val/1</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="encodeBase64-1">encodeBase64/1</a></h3>
+<div class="spec">
+<p><tt>encodeBase64(Bs) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="generate_uuids-1">generate_uuids/1</a></h3>
+<div class="spec">
+<p><tt>generate_uuids(Count) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="guess_mime-1">guess_mime/1</a></h3>
+<div class="spec">
+<p><tt>guess_mime(File::string()) -&gt; string()</tt></p>
+</div><p> Guess the mime type of a file by the extension of its filename.</p>
+
+<h3 class="function"><a name="join-2">join/2</a></h3>
+<div class="spec">
+<p><tt>join(Strings::[string()], Separator) -&gt; string()</tt></p>
+</div><p>Join a list of strings together with the given separator
+    string or char.</p>
+
+<h3 class="function"><a name="new_uuid-0">new_uuid/0</a></h3>
+<div class="spec">
+<p><tt>new_uuid() -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="quote_plus-1">quote_plus/1</a></h3>
+<div class="spec">
+<p><tt>quote_plus(Atom::atom() | integer() | float() | string() | binary()) -&gt; string()</tt></p>
+</div><p>URL safe encoding of the given term.</p>
+
+<h3 class="function"><a name="revjoin-3">revjoin/3</a></h3>
+<div class="spec">
+<p><tt>revjoin(Rest, Separator, Acc) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="split-2">split/2</a></h3>
+<div class="spec">
+<p><tt>split(Bin::binary(), Chars::string()) -&gt; binary()</tt></p>
+</div><p>split a binary</p>
+
+<h3 class="function"><a name="to_digit-1">to_digit/1</a></h3>
+<div class="spec">
+<p><tt>to_digit(N) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="to_hex-1">to_hex/1</a></h3>
+<div class="spec">
+<p><tt>to_hex(Bin) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="val-1">val/1</a></h3>
+<div class="spec">
+<p><tt>val(V) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_uuids.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_uuids</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_uuids</h1>
+<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Benoît Chesneau.</p>
+
+<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>).</p>
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#next_uuid-1">next_uuid/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#uuid-1">uuid/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#uuids-2">uuids/2</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
+<div class="spec">
+<p><tt>code_change(OldVsn, State, Extra) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_call-3">handle_call/3</a></h3>
+<div class="spec">
+<p><tt>handle_call(X1, From, Uuids) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
+<div class="spec">
+<p><tt>handle_cast(Msg, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
+<div class="spec">
+<p><tt>handle_info(Info, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="next_uuid-1">next_uuid/1</a></h3>
+<div class="spec">
+<p><tt>next_uuid(Pid) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
+<div class="spec">
+<p><tt>terminate(Reason, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="uuid-1">uuid/1</a></h3>
+<div class="spec">
+<p><tt>uuid(Pid) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="uuids-2">uuids/2</a></h3>
+<div class="spec">
+<p><tt>uuids(Pid, Count) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>

doc/couchbeam_view.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Module couchbeam_view</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<hr>
+
+<h1>Module couchbeam_view</h1>
+<ul class="index"><li><a href="#types">Data Types</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
+<p>Copyright � 2009 Benoît Chesneau.</p>
+
+<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
+<p><b>Authors:</b> Benoît Chesneau (<a href="mailto:benoitc@e-engura.org"><tt>benoitc@e-engura.org</tt></a>).</p>
+
+<h2><a name="types">Data Types</a></h2>
+
+<h3 class="typedecl"><a name="type-rows">rows()</a></h3>
+<p><tt>rows() = {Id::binary(), Key::term(), Row::<a href="#type-proplist">proplist()</a>}</tt></p>
+
+
+<h3 class="typedecl"><a name="type-view_result">view_result()</a></h3>
+<p><tt>view_result() = {TotalRows::integer(), Offset::<a href="#type-interger">interger()</a>, Rows::<a href="#type-rows">rows()</a>}</tt></p>
+
+
+<h2><a name="index">Function Index</a></h2>
+<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#close_view-1">close_view/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#count-1">count/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#count-2">count/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#fetch_view-1">fetch_view/1</a></td><td></td></tr>
+<tr><td valign="top"><a href="#fetch_view-2">fetch_view/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#parse_view-1">parse_view/1</a></td><td>Return a list of document ids for a given view.</td></tr>
+<tr><td valign="top"><a href="#parse_view-2">parse_view/2</a></td><td></td></tr>
+<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
+</table>
+
+<h2><a name="functions">Function Details</a></h2>
+
+<h3 class="function"><a name="close_view-1">close_view/1</a></h3>
+<div class="spec">
+<p><tt>close_view(ViewPid) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
+<div class="spec">
+<p><tt>code_change(OldVsn, State, Extra) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="count-1">count/1</a></h3>
+<div class="spec">
+<p><tt>count(ViewPid) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="count-2">count/2</a></h3>
+<div class="spec">
+<p><tt>count(ViewPid, Refresh) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="fetch_view-1">fetch_view/1</a></h3>
+<div class="spec">
+<p><tt>fetch_view(ViewPid) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="fetch_view-2">fetch_view/2</a></h3>
+<div class="spec">
+<p><tt>fetch_view(ViewPid, Refresh) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_call-3">handle_call/3</a></h3>
+<div class="spec">
+<p><tt>handle_call(X1, From, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
+<div class="spec">
+<p><tt>handle_cast(Msg, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
+<div class="spec">
+<p><tt>handle_info(Info, State) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="parse_view-1">parse_view/1</a></h3>
+<div class="spec">
+<p><tt>parse_view(ViewPid::<a href="#type-json_object">json_object()</a>) -&gt; <a href="#type-view_result">view_result()</a></tt></p>
+</div><p>Return a list of document ids for a given view.</p>
+
+<h3 class="function"><a name="parse_view-2">parse_view/2</a></h3>
+<div class="spec">
+<p><tt>parse_view(ViewPid, Refresh) -&gt; any()</tt></p>
+</div>
+
+<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
+<div class="spec">
+<p><tt>terminate(Reason, State) -&gt; any()</tt></p>
+</div>
+<hr>
+
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:55.</i></p>
+</body>
+</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>The couchbeam application</title>
+</head>
+<frameset cols="20%,80%">
+<frame src="modules-frame.html" name="modulesFrame" title="">
+
+<frame src="overview-summary.html" name="overviewFrame" title="">
+<noframes>
+<h2>This page uses frames</h2>
+<p>Your browser does not accept frames.
+<br>You should go to the <a href="overview-summary.html">non-frame version</a> instead.
+</p>
+</noframes>
+</frameset>
+</html>

doc/modules-frame.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>The couchbeam application</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<h2 class="indextitle">Modules</h2>
+<table width="100%" border="0" summary="list of modules">
+<tr><td><a href="couchbeam.html" target="overviewFrame" class="module">couchbeam</a></td></tr>
+<tr><td><a href="couchbeam_db.html" target="overviewFrame" class="module">couchbeam_db</a></td></tr>
+<tr><td><a href="couchbeam_deps.html" target="overviewFrame" class="module">couchbeam_deps</a></td></tr>
+<tr><td><a href="couchbeam_doc.html" target="overviewFrame" class="module">couchbeam_doc</a></td></tr>
+<tr><td><a href="couchbeam_manager.html" target="overviewFrame" class="module">couchbeam_manager</a></td></tr>
+<tr><td><a href="couchbeam_mochijson2.html" target="overviewFrame" class="module">couchbeam_mochijson2</a></td></tr>
+<tr><td><a href="couchbeam_mochinum.html" target="overviewFrame" class="module">couchbeam_mochinum</a></td></tr>
+<tr><td><a href="couchbeam_resource.html" target="overviewFrame" class="module">couchbeam_resource</a></td></tr>
+<tr><td><a href="couchbeam_server.html" target="overviewFrame" class="module">couchbeam_server</a></td></tr>
+<tr><td><a href="couchbeam_sup.html" target="overviewFrame" class="module">couchbeam_sup</a></td></tr>
+<tr><td><a href="couchbeam_util.html" target="overviewFrame" class="module">couchbeam_util</a></td></tr>
+<tr><td><a href="couchbeam_uuids.html" target="overviewFrame" class="module">couchbeam_uuids</a></td></tr>
+<tr><td><a href="couchbeam_view.html" target="overviewFrame" class="module">couchbeam_view</a></td></tr></table>
+</body>
+</html>

doc/overview-summary.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>The couchbeam application</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
+</head>
+<body bgcolor="white">
+<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<h1>The couchbeam application</h1>
+
+<hr>
+<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
+<p><i>Generated by EDoc, Oct 16 2009, 23:08:56.</i></p>
+</body>
+</html>

doc/packages-frame.html