3.3.4.4.1 Common Details

On receiving an FrsRpcSendCommPkt call, the server MUST validate the COMM_PACKET object.

Major attribute MUST be 0.

MUST start with COMM_BOP and end with COMM_EOP.

CsId MUST be 1.

Command MUST be a valid value (see section 2.2.3.6.2).

The values of individual elements MUST be set as specified in section 2.2.3.6. If parameter validation fails, the server MUST fail the operation immediately with an implementation-defined failure value.

If parameter validation succeeded, the server confirms the following:

  • Connection identified by COMM_CXTION exists on the local replica member.

  • Replica set identified by COMM_REPLICA exists on the local replica member.

If confirmation fails, the server MUST fail the operation immediately with an implementation-defined failure value. The client MUST tear down the established connection session and re-establish the connection session (see section 3.3.4.6). <78>

If the preceding test passed, the server can call the client back through FrsRpcSendCommPkt with a new COMM_PACKET object to reply to the client (see sections 3.3.4.4.2 through 3.3.4.4.12).

In the following discussion, these abbreviations (and their meanings) are used:

P_IN: Packet received in the original FrsRpcSendCommPkt call.

P_OUT: On receiving a valid FrsRpcSendCommPkt call, if a reply is needed, P_OUT represents the packet to be sent out, and the local replica member MUST reply by calling FrsRpcSendCommPkt to the original FrsRpcSendCommPkt caller.

CO_IN: P_IN.COMM_REMOTE_CO (The change order that is embedded in P_IN.)

CO_OUT: P_OUT.COMM_REMOTE_CO (The change order that is embedded in P_OUT.)

On receiving a COMM_PACKET, FRS MUST determine the type of packet received. If a reply is needed, FRS MUST reply with a different type of COMM_PACKET. Sections 3.3.4.4.2 through 3.3.4.4.12 specify how a response packet MUST be constructed based on the input COMM_PACKET type.

If a reply is needed, P_OUT MUST be in the following format:

COMM_BOP: 0.

COMM_TO:

COMM_FROM:

  • GUID: MUST be P_IN.COMM_TO.GUID.

  • Name: SHOULD<80> be the FQDN of the local member.

COMM_REPLICA:

  • GUID: MUST be P_IN.COMM_FROM.GUID.

  • Name: MUST be P_IN.COMM_REPLICA.Name.

COMM_CXTION: MUST be P_IN.COMM_CXTION.

Other elements are specified in sections 3.3.4.4.2 through 3.3.4.4.12.

COMM_EOP: 0xffffffff.