Skip to content

Commit

Permalink
More TODO
Browse files Browse the repository at this point in the history
  • Loading branch information
stash committed May 29, 2010
1 parent 480adaf commit 0500d3c
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions TODO
Original file line number Original file line Diff line number Diff line change
@@ -1,6 +1,4 @@
Timeouts Timeouts
* slow headers
* slow bodies
* slow responses? (feasable? just let TCP do it?) * slow responses? (feasable? just let TCP do it?)


psgi.input streaming psgi.input streaming
Expand All @@ -11,6 +9,12 @@ psgi.input streaming
* related: Connection: close bodies * related: Connection: close bodies
* related: Transfer-Encoding: chunked bodies * related: Transfer-Encoding: chunked bodies


IO::Handle-like responses

* check if it's got a real file descriptor, optimize (libeio for
non-blocking sendfile?)
* pump the getline() method when connection-writable

streamed responses streamed responses


* add a poll_cb() method to the writer handle. * add a poll_cb() method to the writer handle.
Expand All @@ -22,13 +26,18 @@ Handle requests that don't require a body (optional entities).


* Related: allow overriding the "if entity has a C-L, wait for it" during request * Related: allow overriding the "if entity has a C-L, wait for it" during request
start (not sure if there's a PSGI-compatible way to do this) start (not sure if there's a PSGI-compatible way to do this)
* different request timeout logic will be needed.


Better EV-callback error handling. Better EV-callback error handling.


Lazy I/O watcher initialization? Lazy I/O watcher initialization?


Per-client "drain" and "completion" callbacks? Per-client "drain" and "completion" callbacks?


* "drain" is effectively the poll_cb() ?
* "completion" is when finished sending a full HTTP response (so apps can
make request-completion assertions); could be accomplished with guards instead.

Per-client data (for attaching guards). Per-client data (for attaching guards).


Translate sockaddr/etc. and put in env hash. Translate sockaddr/etc. and put in env hash.
Expand All @@ -39,3 +48,12 @@ away?
sendfile via libeio/IO::AIO ? sendfile via libeio/IO::AIO ?


multiple Feersum threads, one Perl thread? multiple Feersum threads, one Perl thread?

WebSocket support

* http://www.whatwg.org/specs/web-socket-protocol/
* Do the handshake in C/XS, call request_handler once request is complete.
* I/O is done using the streaming interface (buffered)
* requires random numbers (drand48?) and an MD5 implementation (link
openssl? use the guts of Digest::MD5 somehow?)
* make this a separate module since if it brings in an openssl deps.

0 comments on commit 0500d3c

Please sign in to comment.