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. This organization is described to explain how the protocol behaves. This protocol specification does not mandate that implementations adhere to this model as long as their external behavior is consistent with that specified in this document.

The DLT Central Manager server receives requests with updates to information of linked files, or requests for information about linked files. The server maintains the following information:

CurrentRefreshTime: The current time, in units of days. This value MUST initially be zero the first time a server is initialized in a new domain.

RecentTableUpdateCount: A count of the number of updates that have recently been made to the ServerVolumeTable and FileTable, and a time stamp that indicates the last time this count was reset. When the server starts, it MUST set this time stamp to the current time. The RecentTableUpdateCount value MUST NOT exceed 1000. Every time in this protocol that the server checks whether or not this field is at its maximum value (1000) — and if the field is indeed at its maximum value—the server MUST do the following:

  • Check if the current time is more than one hour past the last reset time.

  • If the current time is more than one hour past the last reset time, then the server MUST update the RecentTableUpdateCount field to zero.

  •  Otherwise, the server MUST leave the RecentTableUpdateCount field at 1000.

ServerVolumeTable: A table with rows uniquely identified by a VolumeID, which contains the following fields:

  • VolumeID: The VolumeID that is the key to this entry. The remaining fields provide information about this volume. When this VolumeID type is transmitted between the client and server as part of a request, the type is stored in a CVolumeId structure, as defined in section 2.2.5.

  • VolumeSequenceNumber: Sequencing information that is used to coordinate notifications between the client and the server. When this type is transmitted between the client and server as part of a request, it is stored in a SequenceNumber structure, as defined in section 2.2.2.

  • VolumeSecret: A value that is used to verify with the server that a particular volume is on a client computer. When this type is transmitted between the client and server as part of a request, it is stored in a CVolumeSecret structure, as defined in section 2.2.7.

  • VolumeOwner: The MachineID that the server considers to be the owner of the VolumeID. When this type is transmitted between the client and server as part of a request, it is stored in a CMachineId structure, as defined in section 2.2.3.

  • RefreshTime: A time stamp that indicates when this entry was last known to be correct. This field represents a current or previous value from the CurrentRefreshTime field described earlier in this section. When the RefreshTime type is transmitted between the client and server as part of a request, it is stored in a FILETIME structure as defined in [MS-DTYP] section 2.3.3.

FileTable: A table (with rows that are uniquely identified by a FileLocation or FileID) that contains the following fields:

  • PreviousFileLocation: A FileLocation of the file prior to the FileLocation stored in the following FileLocation field. If the following FileID field is not present, then this field also represents the FileID. When this type is transmitted between the client and server as part of a request, it is stored in a CDomainRelativeObjId structure, as defined in section 2.2.4.

  • FileLocation: The FileLocation of the file represented by this entry at some point in time after the value in the PreviousFileLocation. This is not necessarily the current FileLocation. When this type is transmitted between the client and server as part of a request, the type is stored in a CDomainRelativeObjId structure, as defined in section 2.2.4.

  • FileID: The FileID of the file represented by this entry. This field might or might not be present in a given entry, as noted in the description of PreviousFileLocation. When this type is transmitted between the client and server as part of a request, the type is stored in a CDomainRelativeObjId structure, as defined in section 2.2.4.

  • RefreshTime: A time stamp indicating when this entry was last known to be correct. This field represents a current or previous value from the CurrentRefreshTime field described earlier in this section. When this type is transmitted between the client and server as part of a request, the type is stored in a FILETIME structure as defined in [MS-DTYP] section 2.3.3.

    The following is an example of the conceptual FileTable, where a file with FileID A moves to FileLocation B, and then to FileLocation C. (Only three fields are shown in the example.) The FileTable could have two entries at that point, such as the following.

    PreviousFileLocation

    FileLocation

    FileID

    A

    B

    (Unspecified)

    B

    C

    A

Or the FileTable could have a single, equivalent entry, such as the following.

PreviousFileLocation

FileLocation

FileID

A

C

(Unspecified)

The DLT Central Manager protocol server also operates over a directory database of account information. That database is defined in [MS-SAMR], particularly the user object described in section 3.1.1, and the UserAccountControl described in sections 2.2.7.1 and 2.2.1.13.

Note The preceding conceptual data can be implemented by using a variety of techniques. Any data structure that stores the preceding conceptual data can be used in the implementation.