Hry Mark,
While I'm significantly less qualified than many on the POE list, I will give it a shot.
Part of what POE has taught me is to organize my code into more distinct steps where I can stack them up and execute them asynchronously.
Part of the thing with Fork is that when you look under the covers, it clones the process. So, every time you fork, you create a new instance.
With POE, you organize the things you need to do in subroutines accessed via Call backs. When you need to something that blocks, you use a Run Wheel to keep your process working.
Everything starts off with a _start. In this sub, start up your SocketFactory stuff, your Run Wheels, etc. If these need to be done is specific order, use a yield yo callback to the stack a separate subroutine to start the other things.
As things start running and you accept connections, each accept sets up callbacks for each thing you need to do.
Look at delay_add to setup a delayed timer. Wait and sleep block... And when they do, so does everything else.
I built an event management system capable of handling and processing > 1 million events a minute.
HTH,
Dougie!!!