You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
*** @(RTO4b1)@ All objects except the one with id @root@ must be removed from the internal @ObjectsPool@
108
108
*** @(RTO4b2)@ The data for the @LiveMap@ with id @root@ must be cleared by setting it to a zero-value per "RTLM4":#RTLM4
109
109
**** @(RTO4b2a)@ Emit a @LiveMapUpdate@ object for the @LiveMap@ with ID @root@, with @LiveMapUpdate.update@ consisting of entries for the keys that were removed, each set to @removed@
110
-
*** @(RTO4b3)@ The @SyncObjectsPool@ list must be cleared
110
+
*** @(RTO4b3)@ The @SyncObjectMessages@ list must be cleared
111
111
*** @(RTO4b5)@ The @BufferedObjectOperations@ list must be cleared
112
112
*** @(RTO4b4)@ Perform the actions for objects sync completion as described in "RTO5c":#RTO5c
113
113
* @(RTO5)@ The realtime system reserves the right to initiate an objects sync of the objects on a channel at any point once a channel is attached. A server initiated objects sync provides Ably with a means to send a complete list of objects present on the channel at any point
114
114
** @(RTO5a)@ When an @OBJECT_SYNC@ @ProtocolMessage@ is received with a @channel@ attribute matching the channel name, the client library must parse the @channelSerial@ attribute:
115
115
*** @(RTO5a1)@ The @channelSerial@ is used as the sync cursor and is a two-part identifier: @<sequence id>:<cursor value>@
116
116
*** @(RTO5a2)@ If a new sequence id is sent from Ably, the client library must treat it as the start of a new objects sync sequence, and any previous in-flight sync must be discarded:
117
-
**** @(RTO5a2a)@ The @SyncObjectsPool@ list must be cleared
117
+
**** @(RTO5a2a)@ The @SyncObjectMessages@ list must be cleared
118
118
**** @(RTO5a2b)@ The @BufferedObjectOperations@ list must be cleared
119
119
*** @(RTO5a3)@ If the sequence id matches the previously received sequence id, the client library should continue the sync process
120
120
*** @(RTO5a4)@ The objects sync sequence for that sequence identifier is considered complete once the cursor is empty; that is when the @channelSerial@ looks like @<sequence id>:@
121
121
*** @(RTO5a5)@ An @OBJECT_SYNC@ may also be sent with no @channelSerial@ attribute. In this case, the sync data is entirely contained within the @ProtocolMessage@
122
-
** @(RTO5b)@ During the sync sequence, the @ObjectMessage.object@ values from incoming @OBJECT_SYNC@ @ProtocolMessages@ must be temporarily stored in the internal @SyncObjectsPool@ list
122
+
** @(RTO5b)@ During the sync sequence, the @ObjectMessage.object@ values from incoming @OBJECT_SYNC@ @ProtocolMessages@ must be temporarily stored in the internal @SyncObjectMessages@ list
123
+
*** @(RTO5b1)@ @SyncObjectMessages@ is a temporary internal array of @ObjectState@ values used during the sync sequence
123
124
** @(RTO5c)@ When the objects sync has completed, the client library must perform the following actions in order:
124
-
*** @(RTO5c1)@ For each @ObjectState@ member in the @SyncObjectsPool@ list:
125
+
*** @(RTO5c1)@ For each @ObjectState@ member in the @SyncObjectMessages@ list:
125
126
**** @(RTO5c1a)@ If an object with @ObjectState.objectId@ exists in the internal @ObjectsPool@:
126
127
***** @(RTO5c1a1)@ Override the internal data for the object as per "RTLC6":#RTLC6, "RTLM6":#RTLM6
127
128
***** @(RTO5c1a2)@ Store the @LiveObjectUpdate@ object returned by the operation, along with a reference to the updated object
*** @(RTO5c7)@ For each previously existing object that was updated as a result of "RTO5c1a":#RTO5c1a, emit the corresponding stored @LiveObjectUpdate@ object from "RTO5c1a2":#RTO5c1a2
136
137
*** @(RTO5c6)@ @ObjectMessages@ stored in the @BufferedObjectOperations@ list are applied as described in "RTO9":#RTO9
137
138
*** @(RTO5c3)@ Clear any stored sync sequence identifiers and cursor values
138
-
*** @(RTO5c4)@ The @SyncObjectsPool@ must be cleared
139
+
*** @(RTO5c4)@ The @SyncObjectMessages@ list must be cleared
139
140
*** @(RTO5c5)@ The @BufferedObjectOperations@ list must be cleared
140
141
* @(RTO6)@ When needed, a zero-value object can be created if it does not exist in the internal @ObjectsPool@ for an @objectId@, in the following way:
141
142
** @(RTO6a)@ If an object with @objectId@ exists in @ObjectsPool@, do not create a new object
0 commit comments