As the final server program consists of two quite independent parts, the network server and the route-engine, a system to simply integrate them had to be developed. The solution chosen was to use C++ and create a class for each. The main program therefore just had to create an instance of each and start the network server. An abstract class was developed for the route-engine, which is detailed in Appendix B. Any class derived from this could be used in the final program, with only a single line change to the code, and so the transition from a test engine written for server development to the functional engine was very straightforward.
There were very limited uses for object-oriented programming in the network server section of the program due to its inherently procedural nature. Separate classes were used for administrative and end-user clients, but shared no code and so inheritance was not used. The structure did allow for the possibility of supporting different end-user client types, and a telnet interface was attempted, but abandoned due to time constraints.
Late in the project, a log-server was developed (see Section 2.5). This followed the model of the route-engine, using an abstract class for the client2.11 from which different types were derived. Thus, the type of logging used could be selected by the main routine on execution.