The Fire Department CAD system sends printjobs across a network connection which is normally a private network to a printer located in the fire station. The RIP printer gets plugged into a particular port on the switch and we configure the switch to make copies of all packets that travel in and out of that port. This is referred to as SPANning or mirroring a port.
The copied traffic is sent to the port DispatchBuddy is plugged into. DispatchBuddy uses libpcap to run a filter against all the packets and match those sent on a particular port and to a particular IP. That matching the printer and either LPD or AppSocket.
When packets start arriving at the printer representing a print job then DispatchBuddy starts making a copy of the TCP session. When the session is completed, the payload is transferred to a protocol decoder matching the port in this TCP session.
The protocol decoder recreates the printer image if necessary and extracts the text of the print job. When a graphic image is recreated, OCR is used to extract the text. The extracted text is then returned to the event handler which feeds it into a parser to match each field.
The populated fields are matched for types of messages and the appropriate rcache (recipients cache) group is used to select the recipients to send to. DispatchBuddy creates the appropriate types of messages and sends them over the Internet to the respective recipients.
After accomplishing the time critical message sending, DispatchBuddy stores the data in the SQL server and makes a secondary printjob for the crew that remains behind in the station. This is used to begin the inncident report. A copy of the print job and several stages of data generation are sent to David's printer for code verification. This last function is not required for operation and is used to improve code accuracy.
Throughout all of this, internal stats are kept updated and are available via the internal HTTP server if it has been enabled by configuration.