3.2.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.
The DSLR server abstract data model includes the following data:
ServiceCreator: The service creator function is provided by the application at initialization. When the CreateService message is received from the client, the DSLR service dispenser calls this function (with the provided class ID and service ID) to create the service specified by these GUIDs.
StubTable: The stub function for a given service (identified by a service GUID) is provided by the application at initialization. The service dispenser maintains a table mapping each service GUID to its stub function. When the client application requests that a remote service be created through the CreateService message, the DSLR server uses this table to determine the stub function for the specified service.
ConnectedEvent: This is an optional event provided by the application upon initialization of each service, including the dispenser service. Whenever the transport is connected it notifies its dispatcher, which in turn sets the connect event for each registered service (including the dispenser), if specified at initialization.
DisconnectedEvent: This is an optional event provided by the application upon initialization of each service, including the dispenser service. Whenever the transport is disconnected it notifies its dispatcher, which in turn sets the disconnect event for each registered service (including the dispenser), if specified at initialization.
ServiceTable: The DSLR service dispatcher maintains a table for each service created through CreateService. It maps the client provided service handle to the stub function specified at initialization for a given service GUID.