3.1.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 specification does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this specification.
Provider List: A list of all telephony service providers that are installed on the machine. For each provider, the server maintains the name of the provider, the service provider version, the provider ID, and the list of lines available from this provider. For each line available from the provider, the server keeps track of the registered proxy function handler, if any.
Handle Table: The Handle Table contains all the handles that are used in the Telephony Remote Protocol. The details of the various handles (obtained/released) are described in section 2.2.2. The handle is added to the Handle Table when it is obtained (for example, when HLINEAPP is obtained in an Initialize request) and removed from the Handle Table when it is released (for example, when HLINEAPP is released in a ShutDown packet).
List of Opened Lines: The server maintains the list of opened lines. For each opened line, the server maintains the client that opened the line, the handle to the line (HLINE), the list of calls present on the line, telephony service provider information (provider name, service provider version, and so on) on which this line is available, the device identifier, and the negotiated version.
List of Opened Phones: The server maintains the list of opened phone devices. For each opened phone device, the server maintains the client that opened the phone, the handle to the phone (HPHONE), telephony service provider information (provider name, service provider version, and so on) on which this phone device is available, the device identifier, and the negotiated version.
LineApp Handle List: The LineApp Handle List is the list of clients' usage handles for TAPI line requests (HLINEAPP) obtained by sending the Initialize packet. For each handle, the server maintains a list of lines that were opened using this handle.
PhoneApp Handle List: The PhoneApp Handle List is the list of client's usage handle for TAPI phone requests (HPHONEAPP) obtained by sending the Initialize packet. For each handle, the server maintains a list of phone devices that were opened using this handle.
Client List: The Client List is the list of all clients that established a binding instance with the server using ClientAttach. For each client, the server maintains the client's machine name, the user's domain account name, and the list of usage handles (HLINEAPP/HPHONEAPP) obtained using the Initialize packet.
Call List: The Call List is the list of all calls that are present on the server. For each call, the server maintains a list of clients that have the handle to the call. For each call, the server also maintains the handle to the line on which the call is present, the call state, and the handle to the call (HCALL). The server maintains the association between the handle to the call and the client.
Conference List: The Conference List is the list of all conference calls present on the server. For each conference call, the server maintains the list of calls present on the conference.