in reply to non-blocking socket client?
It sounds like the key is to get your reading and your parsing/logic separated. Once that is done, you can easily swap out different reading methods and see what works best.
One way to do it single threaded is to put socket/buffer pairs into a hash, and call a function to fill those buffers. Once one of the buffers gets to a usable point (such as containing a newline), you can split/regex/substr it off the buffer and do what needs doing.
Your filler function can dump all the sockets into a select and see which ones can be read. Read (once!) only those that are readable, and append to the associated buffer.
Returning a list of only the socket (keys) which changed during that read cycle might be handy to save CPU.
|
|---|