2.3.1.9 ExclusiveLockSubRequestDataType

The ExclusiveLockSubRequestDataType complex type contains information about data or input parameters used in processing an exclusive lock subrequest. The ExclusiveLockID attribute and the ExclusiveLockRequestType attribute specified in the ExclusiveLockSubRequestDataOptionalAttributes attribute group MUST both be specified for an exclusive lock subrequest. The ExclusiveLockID attribute and the ExclusiveLockRequestType attribute are specified as part of the SubRequestData element associated with an exclusive lock SubRequest element. ExclusiveLockSubRequestDataOptionalAttributes is defined in section 2.3.3.4. If the ExclusiveLockRequestType attribute is not provided, an error code SHOULD<31> be returned. If other attributes are not provided, an "InvalidArgument" error code MUST be returned as part of the SubResponseData element associated with the exclusive lock subresponse.

 <xs:complexType name="ExclusiveLockSubRequestDataType">
     <xs:attributeGroup ref="tns:ExclusiveLockSubRequestDataOptionalAttributes"/>
     <xs:attribute name="ClientID" type="xs:string" use="optional"/>
     <xs:attribute name="SchemaLockID" type="xs:string" use="optional" />
     <xs:attribute name="Timeout" type="xs:integer" use="optional" />
     <xs:attribute name="ExclusiveLockID" type="xs:string" use="required"/>
 </xs:complexType>

ExclusiveLockSubRequestDataOptionalAttributes: An attribute group that specifies the set of attributes that are provided only for a SubRequestData element whose parent SubRequest element’s Type attribute is set to "ExclusiveLock". ExclusiveLockSubRequestDataOptionalAttributes is defined in section 2.3.3.4.

ClientID: A string that serves to uniquely identify each client that has access to a shared a lock on a coauthorable file. ClientID MUST be specified when the exclusive lock subrequest has an ExclusiveLockSubRequestType attribute set to "ConvertToSchemaLock" or "ConvertToSchemaJoinCoauth". ExclusiveLockSubRequestType specifies the different types of exclusive lock subrequest and is defined in section 2.3.3.4.

SchemaLockID: A string that is globally unique and known among all the protocol clients that share the same protocol version. The schema lock identifier is used by the protocol server to block other clients that have different schema identifiers. After a protocol client is able to get a shared lock for a file with a specific schema lock identifier, the server MUST allow only other protocol clients that specify the same schema lock identifier to share the file lock. The protocol server ensures that at any instant in time, only clients having the same schema lock identifier can lock the document. After all the protocol clients have released their lock for that file, the protocol server MUST allow a protocol client with a different schema lock identifier to get a shared lock for that file. The SchemaLockID attribute MUST be sent when the exclusive lock subrequest has an ExclusiveLockSubRequestType attribute set to "ConvertToSchemaLock" or "ConvertToSchemaJoinCoauth". ExclusiveLockSubRequestType specifies the different types of exclusive lock subrequests and is defined in section 2.3.3.4. The string "29358EC1-E813-4793-8E70-ED0344E7B73C" has been reserved for use for this attribute.<32>

Timeout: An integer that specifies the time, in seconds, after which the exclusive lock for that particular file will expire for that specific protocol client. The Timeout attribute MUST be set to a value ranging from 60 to 120,000. The Timeout attribute MUST be sent when an exclusive lock subrequest is one of the following types:

  • Get lock

  • Refresh lock

  • Convert to schema lock

  • Convert to schema lock with coauthoring transition tracked

The types of exclusive lock subrequest are defined in section 2.3.3.4.

ExclusiveLockID: A string that serves as a unique identifier for the exclusive lock on the file when an exclusive lock is requested. ExclusiveLockID MUST be specified on all types of exclusive lock subrequests.