3.3.4.4.6.2 Acknowledging the Change Is Done

Once the change order is processed by the local replica member, the server MUST send CMD_REMOTE_CO_DONE to the upstream partner to indicate that the change order is processed.

The server MUST construct the CMD_REMOTE_CO_DONE packet as follows.

COMM_COMMAND: MUST be 0x250 (CMD_REMOTE_CO_DONE).

COMM_JOIN_GUID: MUST be P_IN.COMM_JOIN_GUID.

COMM_LAST_JOIN_TIME: MUST be P_IN.COMM_LAST_JOIN_TIME.

COMM_BLOCK_SIZE: MUST be 0.

COMM_FILE_SIZE: MUST be 0.

COMM_FILE_OFFSET: MUST be 0.

COMM_GVSN: MUST be the current member GVSN.

COMM_CO_GUID: MUST be CO_IN.ChangeOrderGuid.

COMM_CO_SEQUENCE_NUMBER: MUST be CO_IN.PartnerAckSeqNumber.

CO_OUT.Flags:

When the change order is dampened (see section 3.3.4.4.5).

  • Compressed staging file: MUST be a bitwise OR of the following flags:

    • CO_FLAG_SKIP_VV_UPDATE

    • CO_FLAG_COMPRESSED_STAGE

    • CO_FLAG_DIRECTED_CO

    • CO_FLAG_RETRY

    • CO_FLAG_CONTENT_CMD

    • CO_FLAG_VV_ACTIVATED

    • CO_FLAG_ABORT_CO

  • Uncompressed staging file: MUST be a bitwise OR of the following flags:

    • CO_FLAG_SKIP_VV_UPDATE

    • CO_FLAG_DIRECTED_CO

    • CO_FLAG_RETRY

    • CO_FLAG_CONTENT_CMD

    • CO_FLAG_VV_ACTIVATED

    • CO_FLAG_ABORT_CO

When the change order is not dampened but is the conflict loser.

  • Compressed staging file: MUST be a bitwise OR of the following flags:

    • CO_FLAG_COMPRESSED_STAGE

    • CO_FLAG_CONTENT_CMD

    • CO_FLAG_VV_ACTIVATED

    • CO_FLAG_ABORT_CO

  • Uncompressed staging file: MUST be a bitwise OR of the following flags:

    • CO_FLAG_CONTENT_CMD

    • CO_FLAG_VV_ACTIVATED

    • CO_FLAG_ABORT_CO

When the change order is neither dampened nor the conflict loser.

  • Copying file.

    Initial Sync:

    • Compressed staging file: MUST be a bitwise OR of the following flags:

      • CO_FLAG_VVJOIN_TO_ORIG

      • CO_FLAG_COMPRESSED_STAGE

      • CO_FLAG_NEW_FILE

      • CO_FLAG_LOCATION_CMD

      • CO_FLAG_CONTENT_CMD

      • CO_FLAG_ACTIVATED

    • Uncompressed staging file: MUST be a bitwise OR of the following flags:

      • CO_FLAG_VVJOIN_TO_ORIG

      • CO_FLAG_NEW_FILE

      • CO_FLAG_LOCATION_CMD

      • CO_FLAG_CONTENT_CMD

      • CO_FLAG_ACTIVATED

    Normal Sync:

    • Compressed staging file: MUST be a bitwise OR of the following flags:

      • CO_FLAG_COMPRESSED_STAGE

      • CO_FLAG_NEW_

      • FILE (if a new file)

      • CO_FLAG_LOCATION_CMD

      • CO_FLAG_CONTENT_CMD

      • CO_FLAG_ACTIVATED

    • Uncompressed staging file: MUST be a bitwise OR of the following flags:

      • CO_FLAG_NEW_FILE (if a new file)

      • CO_FLAG_LOCATION_CMD

      • CO_FLAG_CONTENT_CMD

      • CO_FLAG_ACTIVATED

When renaming a file or folder.

  • Normal Sync:

    Compressed staging file: MUST be a bitwise OR of the following flags:

    • CO_FLAG_COMPRESSED_STAGE

    • CO_FLAG_CONTENT_CMD

    • CO_FLAG_ACTIVATED

      Uncompressed staging file. MUST be a bitwise OR of the following flags:

    • CO_FLAG_LOCATION_CMD

    • CO_FLAG_ACTIVATED

When copying a folder.

  • Initial Sync:

    Compressed staging file. MUST be a bitwise OR of the following flags:

    • CO_FLAG_VVJOIN_TO_ORIG

    • CO_FLAG_COMPRESSED_STAGE

    • CO_FLAG_NEW_FILE

    • CO_FLAG_LOCATION_CMD

    • CO_FLAG_ACTIVATED

      Uncompressed staging file. MUST be a bitwise OR of the following flags:

    • CO_FLAG_VVJOIN_TO_ORIG

    • CO_FLAG_NEW_FILE

    • CO_FLAG_LOCATION_CMD

    • CO_FLAG_ACTIVATED

  • Normal Sync:

    Compressed staging file: MUST be a bitwise OR of the following flags:

    • CO_FLAG_COMPRESSED_STAGE

    • CO_FLAG_NEW_FILE (if a new folder)

    • CO_FLAG_LOCATION_CMD

    • CO_FLAG_ACTIVATED

      Uncompressed staging file: MUST be a bitwise OR of the following flags:

    • CO_FLAG_NEW_FILE (if a new folder)

    • CO_FLAG_LOCATION_CMD

    • CO_FLAG_ACTIVATED

When deleting a file or folder: MUST be 0xA. bitwise OR:

  • CO_FLAG_LOCATION_CMD

  • CO_FLAG_VV_ACTIVATED

CO_OUT.IFlags:

  • If change order is dampened: MUST be 0.

  • If change order is not dampened: MUST be 0x1 (CO_IFLAG_VVRETIRE_EXEC).

CO_OUT.State:

  • If change order is dampened: MUST be 8. (Waiting to retry the fetch of the staging file for the remote change order.)

  • If change order is not dampened but is the conflict loser: MUST be 0. (Change order is entered in the log.)

  • If change order is neither dampened nor the conflict loser: MUST be 0x16. (Database state update started).

CO_OUT.ContentCmd:

  • Initial Sync: MUST be 0.

  • Normal Sync: MUST be CO_IN.ContentCmd.

LocationCmd:

  • If change order is either dampened or the conflict loser:

    • If a file: MUST be 0xE.

    • If a folder: MUST be 0xF.

  • Otherwise: MUST be CO_IN.LocationCmd.

CO_OUT.FileOffset: MUST be 0.

See sections 4.2, 4.4.5, 4.5.1.1, 4.5.2.1, 4.5.3.1, 4.5.4.1, 4.5.5.1, and 4.5.6.1.