3.1.5.5 NetMeeting Object Manager Sequence Stamps
Operation Sequencing and Resequencing
The NetMeeting Object Manager protocol specifies one or more sequence stamps, which are used to re-order packets that arrive in varying orders at different nodes. Before being broadcast, each operation packet is assigned a sequence stamp that consists of an ordered pair of a workset generation number and a node id. After receiving an operation packet, an object manager instance compares the packet stamp to one or more stamps that are maintained locally. Depending on the comparison results, an object manager instance executes or ignores the requested operation.
Sequence Stamps
The workset generation number is an unsigned integer that begins at zero when the workset is created; increments whenever the Object Manager performs a local operation; and accepts the greater of the existing local value or of the workset generation number that is contained in the network operation sequence stamp whenever a network operation arrives.
The node id is the domain-unique integer user ID that is allocated by the MCS subsystem to the object manager instance.
Sequence Stamp Types
Object Manager implements the following sequence stamps:
One clear stamp per workset, representing the last relative time that the workset was cleared; initialized to <0.ID>, where ID is the ID of the node that created the workset.
Four sequence stamps per object:
The addition stamp, representing the relative time that the object was added to the workset.
The position stamp, representing the relative time that the object was last moved within the workset.
The update stamp, representing the relative time that the object was last updated.
The replace stamp, representing the relative time that the object was last replaced.
The position-, update-, and replace- stamps are initialized with the addition stamp value.
Sequence Stamp Relative Order
The relative order of sequence stamps is defined as follows, where stamp_X = workset_generation_ number_X.node_id_X:
If workset_generation_number_1 < workset_generation_number_2, then stamp_1 < ("is lower than") stamp_2;
Else if workset_generation_number_1 = workset_generation_number_2, then:
If node_id_1 < node_id_2, then stamp_1 < stamp_2;
Else stamp_2 < stamp_1;
Else stamp_2 < stamp_1.