Hi, First, quite a lot of background - and then two questions.
I am contemplating using POE for a server utility intended to be usable on a number of platforms, including Windows. The server will be used to support performance testing, by providing shared variable services that can be accessed from multiple hosts, such as those acting as agents applying load to the system under test and/or those monitoring resource usage during the test. I work in a number of environments, including Linux, Solaris and Windows. Some customers are Windows-only, others have mixed environments that include Windows. So my server utility will need to be runnable under Windows, as well as various unix-like systems. One service provided is to wait until a shared variable has a specified value. The client sends a wait request: the server does not send a response until the shared variable has attained the specified value. This can be used as a 'starting gate', making it easy for clients to block until the starting gate is opened - but it will mean that there may be many hundreds of (or even a few thousand) clients waiting for their responses. The server utility can also be run in a distributed mode, with multiple instances running on different hosts. A client can send its requests to any instance of the server, although it would usually be best to send it to an instance running on the same host as the client. Each instance of the server knows on which server instance each shared variable resides, and will transparently forward requests to the appropriate instance. I have already implemented a version of this utility using plain Perl, starting from the non-blocking TCP server in the Perl Cookbook which uses IO::Select. But it has grown to be too complex to maintain, and its reliability is suspect - and it's intrinsically a difficult project to test. The reliability issues might well be caused by coding errors due to the complexity: as well the features mentioned above, it provides distributed mutexes, waits on multiple distributed shared variables, optional time-outs on waits, and other features. So now for the questions: - Is POE a sensible choice for me to re-implement this server, particularly if it will have to run reliably under Windows? The main interactions with the OS will be handling TCP sockets: I don't anticipate having to have to do any explicit threading, process-forking or signal handling, which should reduce the risks associated with possible flakiness under Windows. - What forum would you recommend me to use when I have to seek help or advice on the POE-specific aspects of the code? I have been enjoying Perl for over six years, and my programming background includes systems programming back in the days when operating systems were written in assembler languages - but I will likely be seeking help so I don't end up in another dead end after putting even more effort into a project that has already taken a lot (months?) of my time. Thanks for your attention this far - and thanks in advance if you feel inclined to respond. Derek