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@
109
109
*** @(RTO4b2)@ The data for the @LiveMap@ with id @root@ must be cleared by setting it to a zero-value per "RTLM4":#RTLM4. Note that the client SDK must not create a new @LiveMap@ instance with id @root@; it must only clear the internal data of the existing @LiveMap@ with id @root@
110
110
**** @(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@
111
-
*** @(RTO4b3)@ The @SyncObjectsPool@ list must be cleared
111
+
*** @(RTO4b3)@ The @SyncObjectMessages@ list must be cleared
112
112
*** @(RTO4b5)@ The @BufferedObjectOperations@ list must be cleared
113
113
*** @(RTO4b4)@ Perform the actions for objects sync completion as described in "RTO5c":#RTO5c
114
114
* @(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
115
115
** @(RTO5d)@ If an @OBJECT_SYNC@ @ProtocolMessage@ is received and "@ObjectMessage.object@":../features#TR4r is null or omitted, the client library should skip processing that @ProtocolMessage@
116
116
** @(RTO5a)@ When an @OBJECT_SYNC@ @ProtocolMessage@ is received with a @channel@ attribute matching the channel name, the client library must parse the @channelSerial@ attribute:
117
117
*** @(RTO5a1)@ The @channelSerial@ is used as the sync cursor and is a two-part identifier: @<sequence id>:<cursor value>@
118
118
*** @(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:
119
-
**** @(RTO5a2a)@ The @SyncObjectsPool@ list must be cleared
119
+
**** @(RTO5a2a)@ The @SyncObjectMessages@ list must be cleared
120
120
**** @(RTO5a2b)@ The @BufferedObjectOperations@ list must be cleared
121
121
*** @(RTO5a3)@ If the sequence id matches the previously received sequence id, the client library should continue the sync process
122
122
*** @(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>:@
123
123
*** @(RTO5a5)@ An @OBJECT_SYNC@ may also be sent with no @channelSerial@ attribute. In this case, the sync data is entirely contained within the @ProtocolMessage@
124
-
** @(RTO5b)@ During the sync sequence, the "@ObjectMessage.object@":../features#TR4r values from incoming @OBJECT_SYNC@ @ProtocolMessages@ must be temporarily stored in the internal @SyncObjectsPool@ list
124
+
** @(RTO5b)@ During the sync sequence, the "@ObjectMessage.object@":../features#TR4r values from incoming @OBJECT_SYNC@ @ProtocolMessages@ must be temporarily stored in the internal @SyncObjectMessages@ list
125
+
*** @(RTO5b1)@ @SyncObjectMessages@ is a temporary internal array of @ObjectState@ values used during the sync sequence
125
126
** @(RTO5c)@ When the objects sync has completed, the client library must perform the following actions in order:
126
-
*** @(RTO5c1)@ For each @ObjectState@ in the @SyncObjectsPool@ list:
127
+
*** @(RTO5c1)@ For each @ObjectState@ in the @SyncObjectMessages@ list:
127
128
**** @(RTO5c1a)@ If an object with @ObjectState.objectId@ exists in the internal @ObjectsPool@:
128
129
***** @(RTO5c1a1)@ Replace the internal data for the object as described in "RTLC6":#RTLC6 or "RTLM6":#RTLM6 depending on the object type, passing in current @ObjectState@
129
130
***** @(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
138
139
*** @(RTO5c6)@ @ObjectMessages@ stored in the @BufferedObjectOperations@ list are applied as described in "RTO9":#RTO9
139
140
*** @(RTO5c3)@ Clear any stored sync sequence identifiers and cursor values
140
-
*** @(RTO5c4)@ The @SyncObjectsPool@ must be cleared
141
+
*** @(RTO5c4)@ The @SyncObjectMessages@ list must be cleared
141
142
*** @(RTO5c5)@ The @BufferedObjectOperations@ list must be cleared
142
143
* @(RTO6)@ Certain object operations may require creating a zero-value object if one does not already exist in the internal @ObjectsPool@ for the given @objectId@. This can be done as follows:
143
144
** @(RTO6a)@ If an object with @objectId@ exists in @ObjectsPool@, do not create a new object
0 commit comments