3.1.4.4.4 CREATE_VOLUME
CREATE_VOLUME is a subrequest of the SYNC_VOLUMES message request (see section 3.1.4.4). This type requests that the DLT Central Manager server create a new entry in its ServerVolumeTable.
If the RecentTableUpdateCount is at its maximum value, the server MUST set the hr field of the TRKSVR_SYNC_VOLUME structure to TRK_E_SERVER_TOO_BUSY, and MUST NOT process this subrequest any further.
For this subrequest, fields in the TRKSVR_SYNC_VOLUME structure have the following meaning:
secret: The value that is to be used as the VolumeSecret field for the new entry in the ServerVolumeTable.
If there are already 26 entries in the ServerVolumeTable whose VolumeOwner is the RequestMachine, then the server MUST set the hr field of the TRKSVR_SYNC_VOLUME structure to TRK_E_VOLUME_QUOTA_EXCEEDED, and MUST NOT process this subrequest any further.
The server MUST generate a new VolumeID value. As described later in this section, this value is used as the VolumeID value for a new entry in the ServerVolumeTable. This value MUST be arbitrarily generated as any valid value, as defined in section 1.1. That is, the VolumeID MUST be a 16-byte binary value, the low-order bit of the first byte MUST be a zero, the value MUST NOT be all zeros, and the value MUST be unique within the ServerVolumeTable. This value also MUST be unique within this SYNC_VOLUMES message, for any other CREATE_VOLUME subrequest.
The fields of the TRKSVR_SYNC_VOLUME structure MUST be updated as follows:
volume: MUST be set to the value of the VolumeID generated previously.
hr: MUST be set to zero.
If the server does not use the LnkSvrMessageCallback method, the following steps MUST be followed. (The LnkSvrMessageCallback is defined in section 3.2.4.1, and the use by the server of that callback is defined in section 3.1.4.4.) If the server does use the LnkSvrMessageCallback method, the following steps MUST be followed by the server after calling the LnkSvrMessageCallback method, if that method returns from the client with a successful return value.
The server MUST increment the RecentTableUpdateCount.
The server MUST create a new entry in the ServerVolumeTable. The fields of this new entry MUST be set as follows:
VolumeID: This MUST be set to the VolumeID value created previously by the server.
VolumeSequenceNumber: This MUST be set to zero.
VolumeSecret: This MUST be set to the value of the secret field of the TRKSVR_SYNC_VOLUME structure from the subrequest.
VolumeOwner: This MUST be set to the RequestMachine of the request.
RefreshTime: This MUST be set to the current value of the CurrentRefreshTime.