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 organization is provided to explain 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 specified in this document.

Clients MUST maintain the following data elements:

IPID table: A table of entries to interfaces on objects keyed by IPID. Each entry MUST contain:

  • The IPID of the interface.

  • The IID of the interface.

  • The OID of the object.

  • The OXID of the object exporter.

  • The public reference counts of the object reference.

  • The private reference counts of the object reference.

OXID table: A table of entries to object exporters known by the client, keyed by OXID. Each entry MUST contain:

  • The OXID of the object exporter.

  • The RPC binding information for the object exporter.

  • The IPID of the IRemUnknown interface of the object exporter.

  • The Authentication level hint for the object exporter.

  • The COMVERSION of the exporter.

OID table: A table of entries to objects known by the client, keyed by OID. Each entry MUST contain:

  • The OID of the object.

  • A list of IPIDs of the interfaces on the object.

  • The OXID of the object exporter.

  • An implementation-defined hash of the STRINGBINDING of the saResAddr field contained in the STDOBJREF.

  • A Boolean garbage_collection flag that MUST be set to True if the object participates in pinging; see the SORF_NOPING flag in section 2.2.18.2.

Resolver table: A table of entries to object resolvers known by the client, keyed by a STRINGBINDING hash. Each entry MUST contain:

  • A STRINGBINDING hash.

  • The DUALSTRINGARRAY of the object resolver.

  • The SETID containing the ping set identifier of the object resolver.

  • The RPC binding information for the object resolver.

SETID table: A table of entries to ping sets referenced by the client, keyed by SETID. Each entry MUST contain:

  • The SETID of the ping set.

  • A list of OIDs that are in the ping set.

  • A sequence number.