This abstract base class closely resembles the corresponding abstract base class used in a simple caller-dispatcher pair, with one exception. Most abstract parent base classes declare the interface for a member function that creates the child caller and dispatcher. The parent caller class and the parent dispatchers implementation class override and define this function differently.
For example, if a client wants to issue a remote request to a font server, the parent caller must first identify what type of font is issuing the request. The abstract parent base class declares the interface for a GetFontSet member function. The parent uses this function to identify the font type and sends the font type (in the request) to the server. The parent dispatcher unmarshalls the parameters and forwards these to the GetFontSet function in its implementation instance. GetFontSet can then identify the type of dispatcher it needs to instantiate, perform an Add on the directory, and stream a child ID back to the parent caller.