So I've been thinking that maybe stat recording for servers could be done through the method of connectionless packets, like the yyystatus command, except it would be specialized for status recording. This way the status recording could be made a lot more flexible, from getting global stats from all the servers that are listed in the server list to recording stats for private servers and such.
Basicly, here's how the stats server would work:
I will refer to the stats server as SS and the game server as CS (client server).
First thing that would happen is that the SS will send a command to the CS that lets him know that we are going to record stats from him, the command could be something like "statsconnect" or whatever. This command will cause the CS to create a 'Message' stack and an unique ID that the CS will send back to the SS. Each 'Message' would contain the information for every event that occurs in the server. Every time an event happens (player A kills player B, player A connects, map changed) a message would be created and it would be pushed into the stack.
The SS will wait for the unique ID and from then it will send this ID along with every command so the CS knows what stack to use.
Now every minute or so, the SS would send another command to the CS, what this command will do is pop all the elements of the stack from the CS and send them to the SS, which would be parsed.
The SS would probably wait for a map change so it can start recording data, this way you can take advantage of the current pop command for getting stuff like client connects or the current map being played, therefore not having to implement other commands that fetch the players or current map.
All that the SS has to do now is pop all the messages from the stack every now and then and its set, the CS would probably need a min and max time limit so it doesnt get abused and the stack can be freed when the SS times out.
So any thoughts? Feedback? Possible changes to the model or maybe even a completely different model? Please post it. I realize that my model isnt perfect, that why I didnt make a feature vote thread, so please post your thoughts.