Commit Graph

176 Commits (8ad47c8de7609f6b8f729f1b212271a39fdd03f9)

Author SHA1 Message Date
Ryan ad9d683f9f API: rename node.Process to node.ChildProcess
This is to avoid confusion with the global "process" object, especially for
the instances of node.Process.
2009-08-26 22:36:45 +02:00
Ryan 116f4dea05 lint 2009-08-26 22:14:45 +02:00
Ryan 723c7d9f7c Replace onExit() with process.addListener("exit")
- Update documentation.

- Depreciation message for onExit().
2009-08-26 22:14:44 +02:00
Ryan 31265be4a6 Depreciate onLoad 2009-08-26 22:14:44 +02:00
Ryan 18d0511777 promise.block() renamed to promise.wait()
promise.wait() now returns the arguments of the "success" event.  If there
was only a single argument, then it is returned.  If there was more than
one, they are returned as an array.  If there was an error, it is thrown.
See documentation.
2009-08-26 17:28:49 +02:00
Ryan db42ad959d API: All EventEmitters emit "newListener" when listeners are added.
The "newListener" event will also be emitted for listeners to "newListener".
Maybe useful?
2009-08-25 17:28:06 +02:00
Ryan 19f182a39f Experimental support for Promise.block() 2009-08-25 04:25:35 +02:00
Ryan 82cb1b5acb API: Remove buffered file object (node.File)
With the addition of non-libeio stdio (17c6a67f15)
this class is no longer being used internally. It has proved buggy and isn't
full-featured enough to be very useful.  Since it's implemented entirely in
javascript it will be easy for someone to extra into their own library if
needed.
2009-08-25 01:18:44 +02:00
Ryan 8658999c7d Refactor node.Process to take advantage of evcom_reader/writer. 2009-08-25 01:06:49 +02:00
Ryan 17c6a67f15 Introduce node.stdio
Remove old stdout, stderr, stdin objects.
2009-08-24 21:20:26 +02:00
Ryan 0727fcc9ed Speed up test-tcp-throttle.js 2009-08-24 21:11:02 +02:00
Ryan 316e2833f0 Use flat object instead of array-of-arrays for HTTP headers.
E.G. { "Content-Length": 10, "Content-Type": "text/html" } instead of
[["Content-Length", 10], ["Content-Type", "text/html"]].
The main reason for this change is object-creation efficiency.

This still needs testing and some further changes (like when receiving
multiple header lines with the same field-name, they are concatenated with a
comma but some headers ("Content-Length") should not be concatenated ; the
new header line should replace the old value).

Various thoughts on this subject:
http://groups.google.com/group/nodejs/browse_thread/thread/9a67bb32706d9efc#
http://four.livejournal.com/979640.html
http://mail.gnome.org/archives/libsoup-list/2009-March/msg00015.html
2009-08-23 12:32:49 +02:00
Ryan 368ea93bfe Upgrade evcom - fix API issues. 2009-08-19 17:41:32 +02:00
Ryan 7aaab320b3 API: tcp.Connection "disconnect" event renamed to "close".
More semantic, since the event will be emitted on connection error,
when the connection was ever established.
2009-08-14 12:51:46 +02:00
Ryan dd5ae3183b Enable test-tcp-many-clients. 2009-08-13 15:05:02 +02:00
Ryan 3b0408ec1c Sync evcom after refactor; fix binding issues 2009-08-13 13:47:16 +02:00
Ryan 738d20f6f0 (evcom) Add fix for pausing against big buffers.
discussion:
http://groups.google.com/group/nodejs/browse_thread/thread/11a920da4d0ed21d
2009-08-10 12:32:54 +02:00
Ryan 94e8721771 Add connection.readPause() and connection.readResume() 2009-08-09 19:12:12 +02:00
Ryan 75fc21537a Bugfix: response.setBodyEncoding("ascii") not working.
This is same error that was fixed in 216fb3b9b2.

Reported by Felix Geisendörfer.
2009-08-09 18:04:10 +02:00
Ryan 9b3baf3d50 Bugfix: node.encodeUtf8 was broken. (Connor Dunn)
http://groups.google.com/group/nodejs/browse_thread/thread/5ad0660a0959d885#
2009-08-06 13:17:30 +02:00
Ryan e111ccc014 Add Felix Geisendörfer's HTTP stress test.
Does not pass on Macintosh and FreeBSD.
2009-08-05 11:17:26 +02:00
Ryan 4f46c47773 node.fs.File was not passing args to promise callbacks.
Reported by Jacob Rus.
2009-07-31 19:48:19 +02:00
Ryan 9d3ed1bb92 Bugfix: negative integers in raw encoding stream.
Add test. Reported by Tim Caswell.
2009-07-31 19:16:08 +02:00
Ryan b27f8ba06d Default to chunked for client requests without C-Length.
Also add test. Reported by Felix Geisendörfer.
2009-07-31 18:34:27 +02:00
Ryan 41d89f611f Add DNS API.
Missing functional tests. I'm not sure how to do tests because I don't want
to rely on the fact that users have an internet connection.
2009-07-28 12:36:41 +02:00
Ryan d41197e02c Disable test-tcp-many-clients.js. It's broken on macintosh - don't want to fix right now. 2009-07-27 15:30:07 +02:00
Ryan b1588e78d9 Fix utf8 scripts, add test. Thanks Urban. 2009-07-20 21:22:19 +02:00
Ryan 1b6bbc619d Bugfix: Server-side clients not attached between creation and on_connect.
Solution is to manually add Attach() to OnConnection.

For client side it seems there is no Detach() being called after NS
resolution? Otherwise I would have removed it. That was another bug.

Note: We don't want to modify evnet's behavior to have on_connect called
directly when the socket is accepted. evnet needs to support SSL, and
on_connect is supposed to signal that the SSL connection is established. The
point here is that being "connected" and being "attached" to the event loop
are two different things. SSL stuff may be transmitted when a socket is not
"connected" but it must always be attached.
2009-07-15 17:36:30 +02:00
Ryan 5e2a6f8c46 Upgrade evnet to fix close() bug. Add test for bug.
evnet wasn't properly closing sockets if they didn't have data to write.
2009-07-15 07:54:08 +02:00
Ryan 041af82b8c Bugfix: Sockets not properly reattached if reconnected during disconnect event.
The problem was that Connection::on_close was calling Detach() directly
after executing the "disconnect" event. Since we had a boolean attach count,
this was leaving sockets detached even if they had reattached in during the
event.

 * Added many asserts in http.cc and net.cc to ensure that sockets are
   connected when they should be.

 * Changed ObjectWrap to use a reference count instead of boolean attached_
   value.

 * Fixed similar bug in Timer.
2009-07-13 16:38:55 +02:00
Joshaven Potter 4b9f26c51a validate js 2009-07-01 02:33:08 +02:00
Ryan 7879e7fd25 small cleanups 2009-06-30 13:58:30 +02:00
Ryan 8047b912c0 Change 'new node.tcp.Connection' to 'node.tcp.createConnection' 2009-06-30 13:56:52 +02:00
Ryan d56552dc66 Remove node.Process constructor from API 2009-06-30 13:46:35 +02:00
Ryan e4ba665c87 Fix ref/unref problem. Was doing opposite of what I should. 2009-06-29 20:53:54 +02:00
Ryan 88ad880556 Add new test for node.fs.stat() 2009-06-29 14:11:26 +02:00
Ryan d428eff023 Snakecase events . 2009-06-29 13:18:30 +02:00
Ryan e876d6629e Fix unused variable warnings. 2009-06-28 20:11:55 +02:00
Ryan 65324866bc Implement Promises for file i/o 2009-06-28 19:08:27 +02:00
Ryan ed926da691 Remove onEvent compatibility 2009-06-28 19:08:26 +02:00
Ryan 70fe920fb5 Use events for all HTTP messages.
This is a rather large refactor! Mostly for the better side. I've had to
remove some functionality like req.interrupt(). A lot of other work is left
messy or incomplete.
2009-06-28 19:08:26 +02:00
Ryan ed3d6a63d5 Further expand EventEmitter to TCP and HTTP
The constructor for TCP servers can no longer take a connection handler for
purely technical reasons. (The constructor for EventEmitter is implemented
in C++ but addListener is in javascript, and I don't want to make too many
C++ -> Javascript references.) Thus I introduce new constructor methods to
ease the creation of the servers:

  node.tcp.createServer()
  node.http.createServer()

These work almost the same as the old constructors.

In general we're working towards a future where no constructors are
publicly exposed or take arguments.

The HTTP events like "on_uri" are not yet using the event interface.
onMessage still is a constructor - but this will change soon.
2009-06-28 19:08:26 +02:00
Ryan 5b7fb1003c Add failing test. Process spawning loop.
I think this is the issue Felix Geisendoerfer is reporting:
http://groups.google.com/group/nodejs/browse_thread/thread/efbae1ec1e67786c
2009-06-27 00:11:20 +02:00
Ryan bdad5e7333 test-process-kill: start process after onLoad 2009-06-24 13:58:17 +02:00
Ryan 7363ccd273 bugfix: Properly exit a process.
This requires that onExit() is not called immediately upon receiving a
SIGCHLD. There could still be data in the pipez. So, instead just set a
flag and invoke the pipe watchers.

Sometimes one will not receive an EOF from pipes because the process was
killed by a SIGTERM, or something. If SIGCHLD has been recved but we are
getting EAGAIN, the pipez need to be closed too.
2009-06-24 13:44:12 +02:00
Ryan 3fed1a0954 Use v8's test runner 2009-06-22 14:08:42 +02:00
Urban Hafner ea290e727d Finished remote module loading 2009-06-21 16:59:11 +02:00
Urban Hafner ad15067ea0 Tests and implementation of node.cat() 2009-06-21 16:40:08 +02:00
Urban Hafner 3a44efea69 Merge branch 'master' of git://github.com/ry/node 2009-06-21 16:10:20 +02:00
Ryan c5b5815ae7 fix error in test-process-simple 2009-06-21 14:07:52 +02:00
Ryan 145072e736 Add test-process-kill.js 2009-06-21 14:06:03 +02:00
Ryan e71b089cd7 Add test-process-simple.js 2009-06-21 14:02:01 +02:00
Urban Hafner fc63f840b0 Merge branch 'master' of git://github.com/ry/node 2009-06-19 09:03:24 +02:00
Ryan 89d891f912 Small clean up in test-http-client-race 2009-06-18 14:50:10 +02:00
Ryan e30e4415ee Fixes for ipv6 2009-06-18 14:34:49 +02:00
Urban Hafner ce85f84d15 Implementation of node.http.cat 2009-06-17 08:52:47 +02:00
Urban Hafner 79010540fc Test case for node.http.cat 2009-06-17 08:01:28 +02:00
Urban Hafner b581749255 Merge branch 'master' of git://github.com/ry/node 2009-06-16 21:09:37 +02:00
Ryan d77f757745 Fix test-http-client-race bug 2009-06-16 20:53:15 +02:00
Ryan 194eeac0d9 Add failing test for HTTP Client
Reported by Hagen:
http://groups.google.com/group/nodejs/browse_thread/thread/335b565360437b36
2009-06-16 19:56:00 +02:00
Ryan 3b05cf260e Add "opening" readyState for the resolve period. 2009-06-16 15:50:52 +02:00
Urban Hafner 6b9e5eedf2 Test for remote module loading 2009-06-16 08:20:00 +02:00
Ryan 870b5db46c Bugfix+Refactor: accessing HTTP connection remoteAddress 2009-06-15 15:29:32 +02:00
Ryan dcf5e72036 Fiddle with remoteAddress 2009-06-15 14:35:02 +02:00
Ryan 916b9ca715 Add Request objects on the HTTP server can be interrupted. 2009-06-12 17:37:43 +02:00
Ryan 3a0de007aa onBodyComplete was not getting called in HTTP server 2009-06-12 15:26:06 +02:00
Ryan 1a1406c80e Add 'localhost' to connect() to test for issue 3 2009-06-11 13:43:00 +02:00
Ryan f657a6324a Fix comment/test for Mac getaddinfo() bug.
Note: the test case was broken because on Macintosh the client connects
synchronously. This is undesirable but ok for now.
2009-06-11 11:42:43 +02:00
Ryan 88c04e74c9 Add HTTP proxy test. Fix bug in http.Server.
was not properly inheriting http.Server from http.LowLevelServer.
2009-06-09 14:10:53 +02:00
Ryan dca7f7bada Add http server / http client test. 2009-06-09 10:28:59 +02:00
Ryan 8b49cef10b Modify the tests to use onExit hook.
No need to rely on stdout output now.
onExit callbacks should print stack trace from onExit failure
2009-06-08 19:10:36 +02:00
Ryan f6a7fe2657 Implement onExit() hook for modules.
onExit() is similar to the onLoad() callback. onExit() is called on each
module just before the process exits. This can be used to check state in
unit tests, but not to perform I/O. The process will forcibly exit as soon
as all of the onExit callbacks are made.
2009-06-08 16:17:33 +02:00
Ryan b6fe4aec50 Module system refactor
There is one major API change in the refactor: filename extensions are now
required when requiring or including modules.

Added extra test to test-module-loading.js.
2009-06-08 15:34:15 +02:00
Ryan 5558bc4e6e Add connection.remoteAddress for server-side node.tcp.Connections. 2009-06-05 20:15:54 +02:00
Ryan 8cfdd326a8 Add "had_error" argument to the "onDisconnect" in node.tcp.Client
This is a boolean value which allows one to detect if the socket was closed
due to errors. There is not yet a way to look up the actual error code.
2009-06-04 12:33:19 +02:00
Ryan ed283dc280 Fix bug: catting non-existent files 2009-06-01 12:56:28 +02:00
Ryan 5c2389fada Remove error codes from file on_completion callbacks. Use file.onError.
The error codes still remain for the two general file system operations:
rename and stat.

Additionally I've removed the actionQueue for file system operations. They
are sent directly into the thread pool.
2009-05-25 13:17:35 +02:00
Ryan 58c13e5192 Namespace File stuff in node.fs 2009-05-21 12:49:41 +02:00
Ryan 0ef5c99973 Add http.ServerRequest.setBodyEncoding. Needs test still. 2009-05-20 10:17:07 +02:00
Ryan 1b54e3d87d Change encoding setter/getter to setEncoding function. 2009-05-20 10:02:02 +02:00
Ryan 5e37dfca02 Clean up tests. Add docs. 2009-05-19 22:32:41 +02:00
Ryan 82e773630b HTTP Client: add fix to allow TCP connection to reconnect. 2009-05-19 21:53:26 +02:00
Ryan 6a172d7119 Fix a bug in HTTP server when receiving half-closes. 2009-05-19 20:24:37 +02:00
Ryan 536eceaa2d Debugging http. Add simple test. (Does not pass.) 2009-05-19 14:50:09 +02:00
Ryan 310eed03e0 Clean up readyState handling. Add test. 2009-05-18 13:53:39 +02:00
Ryan 73fb24f48d Relatively large update to TCP API. No more "protocol".
Instead servers are passed a function which gets called on connection (like
in the original design) which has one argument, the connecting socket. The
user sets up callbacks on that. It's pretty much how I had it originally.

Encoding is now set via v8 getter/setter and can be changed dynamically.

The timeout for all sockets is fixed at 60 seconds for now. Need to fix
that.
2009-05-14 23:47:21 +02:00
Ryan 31ba3cde17 Rename TCP classes to sit in node hierarchy. 2009-05-14 20:34:14 +02:00
Ryan de6036669d Add p() like in Ruby. 2009-05-14 18:37:53 +02:00
Ryan 28f86c7aa8 update node.html 2009-05-14 17:36:25 +02:00
Ryan 30450388d6 update oi_socket - modify node code to match 2009-05-05 12:52:18 +02:00
Ryan 09c2ae5c3e Slight change in tcp connection constructor
For server-side sockets, no longer pass the server object to the
js constructor. This is set later with SetAcceptor.

I think the change is a bit strage and convoluted but it allows one give
protocol /classes/ to the c++ constructors instead of protocol instances.
This is nice because derived classes (like HTTP) don't need to copy the
protocol instanciation code.
2009-05-04 12:08:13 +02:00
Ryan 5a071ad72f Begin refactor of http.cc. Remove libebb add http_parser.
And most of http.cc was deleted.
2009-05-03 14:09:16 +02:00
Ryan bb6057d9ad rename Connection.disconnect -> Connection.close 2009-05-03 01:11:39 +02:00
Ryan 1713386580 add Connection::SendEOF. modify test accordingly. 2009-05-03 01:01:42 +02:00
Ryan 15d24d8002 Major refactor of network code
Here I massively change both the external and internal API of the TCP
sockets and servers.

This change introduces the concept of a protocol object like is found in
Twisted Python. I believe this allows for a much cleaner description of how
a socket behaves. What was once a single object "client" or "connection" is
now represented by two objects: a "connection" and a "protocol".

Well - I don't want to ramble too much because neither API is yet public or
documented.  Look the diff of test/test-pingpong.js to see how things have
changed.
2009-05-02 16:34:24 +02:00
Ryan 3886e183fd Add test for setInterval 2009-04-29 14:12:24 +02:00
Ryan 0f5170339c remove process.{cc,h} process.exit() now exit()
the process object might return in the future but for now it is going away.
2009-04-29 11:09:32 +02:00
Ryan cf1c58063e Create a node namespace
Part of general reorganization.
2009-04-28 23:09:56 +02:00
Ryan f17ecf20be change localhost to 127.0.0.1 because macs suck 2009-04-23 19:04:01 +02:00
Ryan a4593e3ebd WAF: fix the debug variant.
problem is they both build by default. need a way to disable the debug variant.
2009-04-23 13:18:38 +02:00