InfoPrint Manager server GUI event dispatcher
When an InfoPrint Manager GUI is started, it connects to the command processor part of the pdserver identified by its connection host and socket settings. That GUI makes requests and receives all information from the InfoPrint Manager system through that command processor. Each GUI informs its command processor which servers it is interested in. The command processor then contacts the pdserver or pdservers asking them to send events for the GUI to it. This is called registering for GUI events. The command processor manages all the GUIs connected to it and makes sure events sent from pdservers are delivered to each GUI that has an interest.
In the previous Figure, GUI A connects (a) to the command processor part of pdserver1 and informs the command processor it wants to monitor Queue A. The command processor part of pdserver1 discovers that Queue A is located in pdserver2 and contacts (b) pdserver2 requesting GUI events be sent. GUI B then connects (c) to the command processor part of pdserver1 and informs the command processor it wants to monitor pdserver1 and pdserver2. The command processor part of pdserver1 knows it has already requested pdserver2 to send it GUI events, so it just contacts (d) the server part of pdserver1 and requests it to send GUI events.
Now as events occur in the servers, the GUIs are kept informed. In the previous Figure, a GUI event is generated in pdserver2 that sends it (a) to the command processor part of pdserver1. The command processor part of pdserver1 knows that both GUI A and GUI B are interested in events from pdserver2, so it sends (b) the event to both GUIs. Then a GUI event is generated in pdserver1 that sends it (c) to the command processor part of pdserver1. The command processor part of pdserver1 knows that only GUI B is interested in events from pdserver1, so it sends (d) the event to GUI B.
When a pdserver starts, there might be GUIs already running that are interested in it. The GUIs are notified and things proceed as normal.