Paul Querna wrote: > But Serf Buckets and the event loop definitely do need some more work > -- simple things, like if the backend bucket is a socket, how do you > tell the event loop, that a would block rvalue maps to a file > descriptor talking to an origin server. You don't want to just keep > looping over it until it returns data, you want to poll on the origin > socket, and only try to read when data is available.
I think it can probably be generally stated that every request processed by the server has N descriptors associated with that request (instead of 1 descriptor, in the current code). In the case of a simple file transfer, there are two descriptors, one belonging to the file, the other belonging to the network socket. In the case of a proxy, one socket belongs to the backend connection, and the other belongs to a frontend network socket. And descriptors might need to be polled for read, or for write, or both (SSL). If a mechanism existed whereby all descriptors associated with a request could be given to the event loop, we could be completely asynchronous throughout the server, from the reading from the backend, to the writing to the frontend. Regards, Graham --
