[quote]BTW What is limiting Nettys abilities, that you couldn’t extend by yourself, from what I have seen it just doing simple message passing.
[/quote]
As I said, all the problems with protocols that are not trivial enough to be simple message passing. For instance, HTTP requires that all communication be FIFO, and maintain an in-transit queue of requests and responses. This imposes considerable extra requirements on any multithreaded back-end, and you need to use techniques from non-clocked logic, like readiness notification, completion events, or similar.
Then again, most gaming protocols are “anti-FIFO”, they have a non-deterministic ordering - it’s a requirement that each response be processed and returned as fast as possible, which often means the ordering will scramble. Just the FIFO-queue maintenance from an HTTP-compatible networking layer would add unwanted and perhaps unacceptable overhead.
…and there are plenty of others. Tunnelling, for instance, can throw up several thorny issues which require wide-ranging support in the network layer logic, and yet it is used all over the place in networking, from stream-alteration (compression, encryption) to transparently simulating protocols you don’t understand and can’t interpret, but which you need to carry.
I made a solution for these problems for the GrexEngine (although I don’t recommend doing this from scratch; it’s a lot of effort to get right
even though it’s not much code), that basically comes down to a server that is constructed like lego, using lots of little pluggable modules that each handle different parts of the processing. Certain combinations (like the collection of modules that go together to perform FIFO queuing as requird by HTTP) are frequently needed and can be stored as pre-built large blocks; some modules (like the ones dealing with UDP packet handling) are nearly always combined in radically different ways, so there’s no large-blocks that you can usefully build from them; you may just have to manually assemble the UDP component anew each time you create a server for a new protocol. We briefly considered licensing this (the pluggable mini-modules that you assemble to make full protocol servers) separately but didn’t think there was any demand, although now I’m wondering whether it’s worth offering it and seeing if we get any takers. We never looked into this too deeply, so I don’t have any idea how much it would cost to package it up as a separate bundle.