The FlightGear Tracker tracks flights performed on multiplayer server.
The Tracker comprises:
Originally, the tcp exchange between Tracker Client and the Tracker Server only occurred when there was a message to send. This meant it was unknown if the Tracker Server was connected until it actually came time to send the message.
The way it was written originally meant messages would be lost. So hazuki introduced the PING/PONG messages at the same time he added a save so no messages would be lost.
The source code for the tracker server is in the contrib/fgtracker/ directory and the application is written is c. (see server.c).
Internally fgms prepares the messages, and sends them
The reason for using the unix IPC mechanism was due to the FG_TRACKER being run in a fork() process, thus does not have shared memory. Hence the unix msgsnd/msgrcv IPC.
For windows, a FG_TRACKER thread, was introduced by geoff since there is no fork() in windows; a simple vector msg_queue, protected by a mutex is used to pass these messages internally from FG_SERVER to FG_TRACKER.