On Jun 5, 2013 7:33 PM, Graham Leggett minf...@sharp.fm wrote:
On 05 Jun 2013, at 3:00 PM, Eric Covener cove...@gmail.com wrote:
I've been playing with this in my sandbox, it adds a socket readable
callback to event, similar to the timed callback, which allows
mod_proxy_wstunnel to hop on and off the thread like test/mod_dialup.
http://people.apache.org/~covener/websocket-asynch-8.diff
I was meaning to play around with a similar idea, but you beat me to it.
What I had in mind was an API that passed conn_rec structures rather than
raw sockets, which could then be processed using the same lifecycle that a
server generated conn_rec's pass through (ap_run_process_connection()).
Proxy could then pass the conn_rec it uses towards the backend to the
core, and then obtain event driven events for ready-to-read and
ready-to-write from the frontend and the backend, independently of one
another.
The weird API for the socket callback, which treats a set of sockets
as a group and only callbacks once per group, is to avoid hairy
situations where something like wstunnel or mod_proxy_connect sees
callbacks after the request has finished (or has to make sure this
doesn't happen and use longer-lived pools for state).
In theory these callbacks should be automagically registered with a pool
cleanup, and should in theory be cleaned up automatically. It would be up
to the caller to specify what pool they plan to tie the lifetime to. This
is how conn_rec and request_rec work, ideally any new API should work the
same way.
The callbacks-as-a-group idea is really nice, what I've always wanted is
a way to say call me when socket X is readable and socket Y is writeable,
so I don't waste a lot of time trying to figure this out for myself.
Regards,
Graham
--