3.1.4.8 EditorsTable Subrequest

This operation is used to request that the protocol server store an editors table entry on the file for the client or perform other editors table operations on a file.<55><56> Depending on the EditorsTableRequestType attribute value, the protocol server interprets the subrequest as one of the following types of editors table operations:

  • Join editing session

  • Leave editing session

  • Refresh editing session

  • Update editor metadata

  • Remove editor metadata

The EditorsTableRequestType attribute is defined in section 2.3.3.7. The EditorsTableRequestType attribute is one of the attributes for the EditorsTableSubRequestData element, which is of type EditorsTableSubRequestDataType. The EditorsTableSubRequestDataType is defined in section 2.3.1.23.

The protocol client sends an editors table SubRequest message, which is of type EditorsTableSubRequestType as specified in section 2.3.1.24. The protocol server responds with an editors table SubResponse message, which is of type EditorsTableSubResponseType as specified in section 2.3.1.25. This is done as follows:

  • The protocol client prepares a request containing a URL for the file, a unique request token, and one or more SubRequest elements, as defined in section 2.2.3.2 and section 2.2.3.8. The SubRequest element is of type "EditorsTable", and the SubRequestData element contains attributes that are input parameters used by the server when processing the editors table subrequest. The SubRequestData element is of type EditorsTableSubRequestDataType and is defined in section 2.3.1.23.

  • The protocol server receives the request and parses the logic. Depending on the type of editors table request, the protocol server processes the subrequest as specified in section 3.1.4.8.1, 3.1.4.8.2, 3.1.4.8.3, 3.1.4.8.4 or 3.1.4.8.5. (The Response element is defined in section 2.2.3.5, and the SubResponse element is defined in section 2.2.3.10.) The protocol server uses the ClientID attribute sent in an editors table subrequest to do the following:

    • Uniquely identify each client

    • Keep track of each client and its timeout on its entry in the editors table

    • Optionally store information about the user, such as a user name or email address

The protocol server returns results based on the following conditions:

  • Depending on the type of error, the ErrorCode is returned as an attribute of the SubResponse element. The ErrorCode attribute that is part of the SubResponse element is updated with a specific error code as specified in section 2.2.5.4.

  • If the protocol server was unable to find the URL for the file specified in the Url attribute, the protocol server reports a failure by returning an error code value set to "FileNotExistsOrCannotBeCreated" in the ErrorCode attribute sent back in the SubResponse element.

  • If the ClientID does not currently exist in the editors table, the protocol server returns an error code value set to "EditorClientIdNotFound" for the Update editor metadata request.

  • The protocol server returns an error code value set to "EditorMetadataQuotaReached" for an "Update editor metadata" request if the client has already exceeded its quota for key/value pairs.<57>

  • The protocol server returns an error code value set to "EditorMetadataStringExceedsLengthLimit" for an "Update editor metadata" request if the key exceeds the server’s length limit.

  • The protocol server returns an error code value set to "InvalidSubRequest" if server does not support this request type.

  • The protocol server returns an error code value set to "Success" to indicate success in processing the EditorsTable request.

To retrieve an editors table, a protocol client MUST send a QueryChanges request as specified in [MS-FSSHTTPB], with the PartitionID attribute set to the corresponding editors table partition on the server.<58>