|
@ -43,6 +43,7 @@ h1 a { color: inherit; } |
|
|
pre, code { |
|
|
pre, code { |
|
|
font-family: monospace; |
|
|
font-family: monospace; |
|
|
font-size: 14pt; |
|
|
font-size: 14pt; |
|
|
|
|
|
color: #fee; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
pre { |
|
|
pre { |
|
@ -267,32 +268,54 @@ node.fs.rename("/tmp/hello", "/tmp/world", function (status) { |
|
|
|
|
|
|
|
|
<dl> |
|
|
<dl> |
|
|
<dt><code>node.fs.rename(path1, path2, on_completion(status))</code></dt> |
|
|
<dt><code>node.fs.rename(path1, path2, on_completion(status))</code></dt> |
|
|
<dd> |
|
|
<dd> <a href="http://opengroup.org/onlinepubs/007908799/xsh/rename.html">rename(2)</a> </dd> |
|
|
<a |
|
|
|
|
|
href="http://opengroup.org/onlinepubs/007908799/xsh/rename.html">rename(2)</a> |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>node.fs.stat(path, on_completion(status, stats))</code></dt> |
|
|
<dt><code>node.fs.stat(path, on_completion(status, stats))</code></dt> |
|
|
<dd> |
|
|
<dd> <a href="http://opengroup.org/onlinepubs/007908799/xsh/stat.html">stat(2)</a> </dd> |
|
|
<a href="http://opengroup.org/onlinepubs/007908799/xsh/stat.html">stat(2)</a> |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>node.fs.unlink(path, on_completion(status))</code></dt> |
|
|
<dt><code>node.fs.unlink(path, on_completion(status))</code></dt> |
|
|
<dd> |
|
|
<dd> <a href="http://opengroup.org/onlinepubs/007908799/xsh/unlink.html">unlink(2)</a> </dd> |
|
|
<a |
|
|
|
|
|
href="http://opengroup.org/onlinepubs/007908799/xsh/unlink.html">unlink(2)</a> |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>node.fs.rmdir(path, on_completion(status))</code></dt> |
|
|
<dt><code>node.fs.rmdir(path, on_completion(status))</code></dt> |
|
|
<dd> |
|
|
<dd> <a href="http://opengroup.org/onlinepubs/007908799/xsh/rmdir.html">rmdir(2)</a> </dd> |
|
|
<a |
|
|
|
|
|
href="http://opengroup.org/onlinepubs/007908799/xsh/rmdir.html">rmdir(2)</a> |
|
|
<dt><code>node.fs.close(fd, on_completion(status))</code></dt> |
|
|
|
|
|
<dd> <a href="http://opengroup.org/onlinepubs/007908799/xsh/close.html">close(2)</a> </dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>node.fs.open(path, flags, mode, on_completion(status, fd))</code></dt> |
|
|
|
|
|
<dd> <a href="http://opengroup.org/onlinepubs/007908799/xsh/open.html">open(2)</a> |
|
|
|
|
|
<p>The constants like <code>O_CREAT</code> are defined at <code>node.fs.O_CREAT</code>. |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>node.fs.write(fd, data, position, on_completion(status, written))</code></dt> |
|
|
|
|
|
<dd> Write data to the file specified by <code>fd</code>. |
|
|
|
|
|
<p><code>data</code> is either an array of integer (for raw data) or a string |
|
|
|
|
|
for UTF-8 encoded characters. |
|
|
|
|
|
<p><code>position</code> refers to the offset from the beginning of the |
|
|
|
|
|
file where this data should be written. If <code>null</code>, the data |
|
|
|
|
|
will be written at the current position. |
|
|
|
|
|
|
|
|
|
|
|
<p>See also <a href="http://opengroup.org/onlinepubs/007908799/xsh/pwrite.html">pwrite(2)</a> |
|
|
|
|
|
|
|
|
</dd> |
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>node.fs.read(fd, length, position, encoding, on_completion(status, data))</code></dt> |
|
|
|
|
|
<dd> Read data from the file specified by <code>fd</code>. |
|
|
|
|
|
|
|
|
|
|
|
<p><code>length</code> is an integer specifying the number of bytes to read. |
|
|
|
|
|
|
|
|
|
|
|
<p><code>position</code> is an integer specifying where to begin reading |
|
|
|
|
|
from in the file. |
|
|
|
|
|
|
|
|
|
|
|
<p><code>encoding</code> is either <code>node.fs.UTF8</code> or |
|
|
|
|
|
<code>node.fs.RAW</code>. |
|
|
|
|
|
</dt> |
|
|
</dl> |
|
|
</dl> |
|
|
|
|
|
|
|
|
<h4 id="file_file"><code>node.fs.File</code></h4> |
|
|
<h4 id="file_file"><code>node.fs.File</code></h4> |
|
|
|
|
|
|
|
|
|
|
|
<p>Easy buffered file object. |
|
|
|
|
|
|
|
|
<p>Internal request queues exist for each file object so that multiple commands |
|
|
<p>Internal request queues exist for each file object so that multiple commands |
|
|
can be issued at once without worry that they will be executed out-of-order. |
|
|
can be issued at once without worry that they will be executed out-of-order. |
|
|
Thus the following is safe: |
|
|
Thus the following is safe: |
|
@ -305,7 +328,7 @@ file.write("world"); |
|
|
file.close();</pre> |
|
|
file.close();</pre> |
|
|
|
|
|
|
|
|
<p> |
|
|
<p> |
|
|
It's important to understand that the request queues are local to a single file. |
|
|
Request queues are local to a single file. |
|
|
If one does |
|
|
If one does |
|
|
<pre>fileA.write("hello"); |
|
|
<pre>fileA.write("hello"); |
|
|
fileB.write("world");</pre> |
|
|
fileB.write("world");</pre> |
|
@ -318,10 +341,20 @@ completion callbacks: |
|
|
});</pre> |
|
|
});</pre> |
|
|
|
|
|
|
|
|
<dl> |
|
|
<dl> |
|
|
<dt><code>new node.fs.File</code></dt> |
|
|
<dt><code>new node.fs.File(options={})</code></dt> |
|
|
<dd>Creates a new file object. </dd> |
|
|
<dd>Creates a new file object. |
|
|
|
|
|
|
|
|
|
|
|
<p>The <code>options</code> argument is optional. It can contain the |
|
|
|
|
|
following fields |
|
|
|
|
|
<ul> |
|
|
|
|
|
<li><code>fd</code> — a file descriptor for the file. |
|
|
|
|
|
<li><code>encoding</code> — how <code>file.read()</code> should return |
|
|
|
|
|
data. Either <code>"raw"</code> or <code>"utf8"</code>. Defaults to raw. |
|
|
|
|
|
</ul> |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<dt><code>file.onError</code></dt> |
|
|
<dt><code>file.onError = function (method, errno, msg) { }</code></dt> |
|
|
<dd>Callback. This is called internally anytime an error occurs with this |
|
|
<dd>Callback. This is called internally anytime an error occurs with this |
|
|
file. There are three arguments: the method name, the POSIX errno, and a |
|
|
file. There are three arguments: the method name, the POSIX errno, and a |
|
|
string describing the error. |
|
|
string describing the error. |
|
@ -338,7 +371,7 @@ file.onError = function (method, errno, msg) { |
|
|
file.open(path, "w+") |
|
|
file.open(path, "w+") |
|
|
</pre> |
|
|
</pre> |
|
|
|
|
|
|
|
|
<dt><code>file.open(path, mode, on_completion)</code></dt> |
|
|
<dt><code>file.open(path, mode, on_completion())</code></dt> |
|
|
<dd>Opens the file at <code>path</code>. |
|
|
<dd>Opens the file at <code>path</code>. |
|
|
<p><code>mode</code> is a string: |
|
|
<p><code>mode</code> is a string: |
|
|
<code>"r"</code> open for reading and writing. |
|
|
<code>"r"</code> open for reading and writing. |
|
@ -351,20 +384,20 @@ file.open(path, "w+") |
|
|
append to the end of the file. |
|
|
append to the end of the file. |
|
|
<code>"a+"</code> |
|
|
<code>"a+"</code> |
|
|
<p>The <code>on_completion</code> is a callback that is made without |
|
|
<p>The <code>on_completion</code> is a callback that is made without |
|
|
arguments when the operation completes. It is optional |
|
|
arguments when the operation completes. It is optional. |
|
|
If an error occurred the <code>on_completion</code> callback will not be |
|
|
If an error occurred the <code>on_completion</code> callback will not be |
|
|
called, but the <code>file.onError</code> will be called. |
|
|
called, but the <code>file.onError</code> will be called. |
|
|
</dd> |
|
|
</dd> |
|
|
|
|
|
|
|
|
<dt><code>file.read(length, position, on_completion)</code></dt> |
|
|
<dt><code>file.read(length, position, on_completion(data))</code></dt> |
|
|
<dd> |
|
|
<dd> |
|
|
</dd> |
|
|
</dd> |
|
|
|
|
|
|
|
|
<dt><code>file.write(data, position, on_completion)</code></dt> |
|
|
<dt><code>file.write(data, position, on_completion(written))</code></dt> |
|
|
<dd> |
|
|
<dd> |
|
|
</dd> |
|
|
</dd> |
|
|
|
|
|
|
|
|
<dt><code>file.close(on_completion)</code></dt> |
|
|
<dt><code>file.close(on_completion())</code></dt> |
|
|
<dd> |
|
|
<dd> |
|
|
</dd> |
|
|
</dd> |
|
|
</dl> |
|
|
</dl> |
|
@ -374,8 +407,109 @@ file.open(path, "w+") |
|
|
|
|
|
|
|
|
<h4 id="tcp_server"><code>node.tcp.Server</code></h4> |
|
|
<h4 id="tcp_server"><code>node.tcp.Server</code></h4> |
|
|
|
|
|
|
|
|
|
|
|
<p>Here is an example of a echo server which listens for connections on port |
|
|
|
|
|
7000 |
|
|
|
|
|
<pre> |
|
|
|
|
|
function Echo (socket) { |
|
|
|
|
|
socket.setEncoding("utf8"); |
|
|
|
|
|
socket.onConnect = function () { |
|
|
|
|
|
socket.send("hello\r\n"); |
|
|
|
|
|
}; |
|
|
|
|
|
socket.onReceive = function (data) { |
|
|
|
|
|
socket.send(data); |
|
|
|
|
|
}; |
|
|
|
|
|
socket.onEOF = function () { |
|
|
|
|
|
socket.send("goodbye\r\n"); |
|
|
|
|
|
socket.close(); |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
var server = new node.tcp.Server(Echo, {backlog: 1024}); |
|
|
|
|
|
server.listen(7000, "localhost"); |
|
|
|
|
|
</pre> |
|
|
|
|
|
|
|
|
|
|
|
<dl> |
|
|
|
|
|
<dt><code>new node.tcp.Server(connection_handler(socket), options={});</code></dt> |
|
|
|
|
|
<dd>Creates a new TCP server. |
|
|
|
|
|
|
|
|
|
|
|
<p><code>connection_handler</code> is a callback which is called |
|
|
|
|
|
on each connection. It is given one argument: an instance of |
|
|
|
|
|
<code>node.tcp.Connection</code>. |
|
|
|
|
|
|
|
|
|
|
|
<p><code>options</code> for now only supports one option: |
|
|
|
|
|
<code>backlog</code> which should be an integer and describes how large of |
|
|
|
|
|
a connection backlog the operating system should maintain for this server. |
|
|
|
|
|
The <code>backlog</code> defaults to 1024. |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>server.listen(port, host=null)</code></dt> |
|
|
|
|
|
<dd>Tells the server to listen for TCP connections to <code>port</code> |
|
|
|
|
|
and <code>host</code>. Note, <code>host</code> is optional. If |
|
|
|
|
|
<code>host</code> is not specified the server will accept connections to |
|
|
|
|
|
any IP address on the specified port. |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>server.close()</code></dt> |
|
|
|
|
|
<dd> Stops the server from accepting new connections. </dd> |
|
|
|
|
|
</dl> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h4 id="tcp_connection"><code>node.tcp.Connection</code></h4> |
|
|
<h4 id="tcp_connection"><code>node.tcp.Connection</code></h4> |
|
|
|
|
|
|
|
|
|
|
|
<p>This object is used as a TCP client and also as a server-side socket for |
|
|
|
|
|
<code>node.tcp.Server</code>s. |
|
|
|
|
|
|
|
|
|
|
|
<dl> |
|
|
|
|
|
<dt><code>new node.tcp.Connection()</code></dt> |
|
|
|
|
|
<dd>Creates a new connection object. |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>connection.setEncoding(encoding)</code></dt> |
|
|
|
|
|
<dd>Sets the encoding (either <code>"utf8"</code> or <code>"raw"</code>) |
|
|
|
|
|
for data that is received. |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>connection.send(data)</code></dt> |
|
|
|
|
|
<dd>sends data on the connection |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>connection.close()</code></dt> |
|
|
|
|
|
<dd>Half-closes the connection. I.E. sends a FIN packet. It is possible |
|
|
|
|
|
the server will still send some data. |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>connection.fullClose()</code></dt> |
|
|
|
|
|
<dd>Close both ends of the connection. Data that is received after this |
|
|
|
|
|
call is responded to with RST packets. If you don't know about this, just use |
|
|
|
|
|
<code>close()</code>. |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>connection.forceClose()</code></dt> |
|
|
|
|
|
<dd>Ensures that no more I/O activity happens on this socket. |
|
|
|
|
|
Only necessary in case of errors (parse error or so). |
|
|
|
|
|
</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>conneciton.onConnect = function () { };</code></dt> |
|
|
|
|
|
<dd>Call once the connection is established.</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>conneciton.onReceive = function (data) { };</code></dt> |
|
|
|
|
|
<dd>Called when data is received on the connection. Encoding of data is |
|
|
|
|
|
set by <code>connection.setEncoding()</code>. <code>data</code> will |
|
|
|
|
|
either be a string, in the case of utf8, or an array of integer in the |
|
|
|
|
|
case of raw encoding.</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>conneciton.onEOF = function () { };</code></dt> |
|
|
|
|
|
<dd>Called when the other end of the connection sends a FIN packet. |
|
|
|
|
|
<code>onReceive</code> will not be called after this. |
|
|
|
|
|
You should probably just call <code>connection.close()</code> in this |
|
|
|
|
|
callback. |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>conneciton.onDisconnect = function () { };</code></dt> |
|
|
|
|
|
<dd>Called once the connection is fully disconnected.</dd> |
|
|
|
|
|
|
|
|
|
|
|
<dt><code>conneciton.onError = function () { };</code></dt> |
|
|
|
|
|
<dd>Called on an error.</dd> |
|
|
|
|
|
</dl> |
|
|
|
|
|
|
|
|
<h3 id="http"><code>node.http</code></h3> |
|
|
<h3 id="http"><code>node.http</code></h3> |
|
|
|
|
|
|
|
|
<p>The HTTP interfaces here are designed to support many features |
|
|
<p>The HTTP interfaces here are designed to support many features |