themax
03-07-2002, 02:08 AM
as title , I'm interested with this :)
theCoder
03-08-2002, 03:02 AM
I don't pretend to know everything about (x)inetd, but as I understand it, it listens on the given port for a connection. When it receives the connection, it sets it up and spawns the necessary program to handle it. So for example, if you're running a POP server, when a client connects to port 110, inetd (at least on my system) runs /usr/sbin/ipop3d.
The way the EMU works right now, it does what inetd does. It listens for the connections and when it receives one, it spawns a thread to handle it.
The problems with using inetd:
1) It wouldn't be cross platform. Lots of people use the EMU on Windows and don't AFAIK have any way to get something like inetd (maybe there's a build for win32, I don't know).
2) The connections to the EMU aren't independent -- they all interact. Inetd is great for something like POP because each user connects independently and doesn't care who else is also connecting to read email. But in Everquest, you care quite a bit about what other people are doing. Right now, the EMU can share data relatively easily because it uses pthreads. If it was changed to use inetd, each handler would be a separate process and would not be able to (easily) share in memory data. The processes would have to nmap a file or put all the data in the DB (which would be a big slow down).
But I haven't delved too deep into the source, so what do I know :)
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.