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
Copy file name to clipboardExpand all lines: textile/features.textile
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1516,7 +1516,7 @@ h4. ObjectMessage
1516
1516
** @(OM2f)@ @operation@ @ObjectOperation@ object. Mutually exclusive with the @object@ field. This field is only set on object messages if the @action@ field of the @ProtocolMessage@ encapsulating it is @OBJECT@
1517
1517
** @(OM2g)@ @object@ @ObjectState@ object. Mutually exclusive with the @operation@ field. This field is only set on object messages if the @action@ field of the @ProtocolMessage@ encapsulating it is @OBJECT_SYNC@
1518
1518
** @(OM2h)@ @serial@ string - an opaque string that uniquely identifies this object message
1519
-
** @(OM2j)@ @serialTimestamp@ number - a timestamp from the @serial@ field
1519
+
** @(OM2j)@ @serialTimestamp@ Time - a timestamp from the @serial@ field
1520
1520
** @(OM2i)@ @siteCode@ string - an opaque string used as a key to update the map of @serial@ values on an object
1521
1521
* @(OM3)@ The size of the @ObjectMessage@ for "TO3l8":#TO3l8 is calculated as follows:
1522
1522
** @(OM3a)@ The size is the sum of the sizes of the @clientId@, @operation@, @object@, and @extras@ properties
@@ -1614,7 +1614,7 @@ h4. ObjectsMapEntry
1614
1614
* @(OME2)@ The attributes available in an @ObjectsMapEntry@ are:
1615
1615
** @(OME2a)@ @tombstone@ boolean - indicates whether the map entry has been removed
1616
1616
** @(OME2b)@ @timeserial@ string - the @serial@#OM2h value of the last operation that was applied to the map entry
1617
-
** @(OME2d)@ @serialTimestamp@ number - a timestamp from the @timeserial@ field. It is only present if @tombstone@ is @true@
1617
+
** @(OME2d)@ @serialTimestamp@ Time - a timestamp from the @timeserial@ field. It is only present if @tombstone@ is @true@
1618
1618
** @(OME2c)@ @data@ @ObjectData@ object - the data that represents the value of the map entry.
1619
1619
* @(OME3)@ The size of the @ObjectsMapEntry@ is calculated as follows:
1620
1620
** @(OME3a)@ It is equal to the size of the @data@ property
@@ -2593,7 +2593,7 @@ class ObjectMessage // OM*, internal
2593
2593
operation: ObjectOperation? // OM2f
2594
2594
object: ObjectState? // OM2g
2595
2595
serial: String // OM2h
2596
-
serialTimestamp: Number // OM2j
2596
+
serialTimestamp: Time? // OM2j
2597
2597
siteCode: String // OM2i
2598
2598
2599
2599
class ObjectOperation // OOP*, internal
@@ -2632,7 +2632,7 @@ class ObjectsCounter // OCN*, internal
Copy file name to clipboardExpand all lines: textile/objects-features.textile
+14-14Lines changed: 14 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -111,7 +111,7 @@ h3(#liveobject). LiveObject
111
111
*** @(RTLO3c1)@ Set to @false@ when the @LiveObject@ is initialized
112
112
** @(RTLO3d)@ protected @isTombstone@ boolean - a flag indicating whether this object has been tombstoned, i.e. marked for deletion from the objects pool
113
113
*** @(RTLO3d1)@ Set to @false@ when the @LiveObject@ is initialized
114
-
** @(RTLO3e)@ protected @tombstonedAt@ number - a timestamp indicating when this object was tombstoned
114
+
** @(RTLO3e)@ protected @tombstonedAt@ (optional) Time - a timestamp indicating when this object was tombstoned. This property is nullable, and is non-null if and only if @isTombstone@ is @true@
115
115
*** @(RTLO3e1)@ Set to undefined/null when the @LiveObject@ is initialized
116
116
* @(RTLO4)@ @LiveObject@ methods:
117
117
** @(RTLO4b)@ public @subscribe@ - subscribes a user to data updates on this @LiveObject@ instance
@@ -146,7 +146,7 @@ h3(#liveobject). LiveObject
146
146
*** @(RTLO4a4)@ Get the @siteSerial@ value stored for this @LiveObject@ in the @siteTimeserials@ map using the key @ObjectMessage.siteCode@
147
147
*** @(RTLO4a5)@ If the @siteSerial@ for this @LiveObject@ is null or an empty string, return true
148
148
*** @(RTLO4a6)@ If the @siteSerial@ for this @LiveObject@ is not an empty string, return true if @ObjectMessage.serial@ is greater than @siteSerial@ when compared lexicographically
149
-
** @(RTLO4e)@ protected @tombstone@ - a convenience method used to tombstone this @LiveObject@. The realtime system reserves the right to tombstone an object (i.e. mark it for deletion from the objects pool) by publishing an @OBJECT_DELETE@ operation at any time if the object is orphaned (not a descendant of the root object) or remains uninitialized (no @CREATE@ operation has been received) for an extended period. This method describes the steps the client library must take when it needs to tombstone an object. Eventually, tombstoned objects will be garbage collected following the procedure described in "RTO10":#RTO10
149
+
** @(RTLO4e)@ protected @tombstone@ - a convenience method used to tombstone this @LiveObject@. The realtime system reserves the right to tombstone an object (i.e. mark it for deletion from the objects pool) by publishing an @OBJECT_DELETE@ operation at any time if the object is orphaned (not a descendant of the root object) or remains uninitialized (no @*_CREATE@ operation has been received) for an extended period. Only the realtime system may publish an @OBJECT_DELETE@ operation; clients must never send it. This method describes the steps the client library must take when it needs to tombstone an object locally. Eventually, tombstoned objects will be garbage collected following the procedure described in "RTO10":#RTO10
150
150
*** @(RTLO4e1)@ Expects the following arguments:
151
151
**** @(RTLO4e1a)@ @ObjectMessage@
152
152
*** @(RTLO4e2)@ Set @LiveObject.isTombstone@ to @true@
** @(RTLC6d)@ If @ObjectState.createOp@ is present, merge the initial value into the @LiveCounter@ as described in "RTLC10":#RTLC10, passing in the @ObjectState.createOp@ instance
186
186
*** @(RTLC6d1)@ This clause has been replaced by "RTLC10a":#RTLC10a
187
187
*** @(RTLC6d2)@ This clause has been replaced by "RTLC10b":#RTLC10b
188
-
* @(RTLC7)@ An @ObjectOperation@ from @ObjectMessage.operation@ can be applied to a @LiveCounter@ in the following way:
188
+
* @(RTLC7)@ An @ObjectOperation@ from @ObjectMessage.operation@ can be applied to a @LiveCounter@ by performing the following actions in order:
189
189
** @(RTLC7a)@ A client library may choose to implement this logic as a convenience method named @applyOperation@, which accepts an @ObjectMessage@ instance with an existing @ObjectMessage.operation@ object, with @ObjectMessage.operation.objectId@ matching the Object ID of this @LiveCounter@. This @ObjectMessage@ represents the operation to be applied to this @LiveCounter@
190
-
** @(RTLC7b)@ If @ObjectMessage.operation@ cannot be applied based on the result of "@LiveObject.canApplyOperation@":#RTLO4a, log a debug or trace message indicating that the operation cannot be applied because its serial value is not newer than the object's, and discard the @ObjectMessage@ without taking any action
190
+
** @(RTLC7b)@ If @ObjectMessage.operation@ cannot be applied based on the result of "@LiveObject.canApplyOperation@":#RTLO4a, log a debug or trace message indicating that the operation cannot be applied because its serial value is not newer than the object's, and discard the @ObjectMessage@ without taking any further action
191
191
** @(RTLC7c)@ Set the entry in the private @siteTimeserials@ map at the key @ObjectMessage.siteCode@ to equal @ObjectMessage.serial@
192
-
** @(RTLC7e)@ If @LiveCounter.isTombstone@ is @true@, the operation cannot be applied to the object. Finish processing the @ObjectMessage@ without taking any action. No data update event is emitted
192
+
** @(RTLC7e)@ If @LiveCounter.isTombstone@ is @true@, the operation cannot be applied to the object. Finish processing the @ObjectMessage@ without taking any further action. No data update event is emitted
193
193
** @(RTLC7d)@ The @ObjectMessage.operation.action@ field (see "@ObjectOperationAction@":../features#OOP2) determines the type of operation to apply:
194
194
*** @(RTLC7d1)@ If @ObjectMessage.operation.action@ is set to @COUNTER_CREATE@, apply the operation as described in "RTLC8":#RTLC8, passing in @ObjectMessage.operation@
195
195
**** @(RTLC7d1a)@ Emit the @LiveCounterUpdate@ object returned as a result of applying the operation
196
196
*** @(RTLC7d2)@ If @ObjectMessage.operation.action@ is set to @COUNTER_INC@, apply the operation as described in "RTLC9":#RTLC9, passing in @ObjectMessage.operation.counterOp@
197
197
**** @(RTLC7d2a)@ Emit the @LiveCounterUpdate@ object returned as a result of applying the operation
198
198
*** @(RTLC7d4)@ If @ObjectMessage.operation.action@ is set to @OBJECT_DELETE@, apply the operation as described in "RTLO5":#RTLO5, passing in @ObjectMessage@
199
-
**** @(RTLC7d4a)@ Emit the @LiveCounterUpdate@ object with @LiveCounterUpdate.update.amount@ set to the negative @data@ value this @LiveCounter@ had before applying the @OBJECT_DELETE@ operation
200
-
*** @(RTLC7d3)@ Otherwise, log a warning that an object operation message with an unsupported action has been received, and discard the current @ObjectMessage@ without taking any action. No data update event is emitted
199
+
**** @(RTLC7d4a)@ Emit a @LiveCounterUpdate@ object after applying the @OBJECT_DELETE@ operation, with @LiveCounterUpdate.update.amount@ set to the negated value that this @LiveCounter@ held before the operation was applied
200
+
*** @(RTLC7d3)@ Otherwise, log a warning that an object operation message with an unsupported action has been received, and discard the current @ObjectMessage@ without taking any further action. No data update event is emitted
201
201
* @(RTLC8)@ A @COUNTER_CREATE@ operation can be applied to a @LiveCounter@ in the following way:
202
202
** @(RTLC8a)@ Expects the following arguments:
203
203
*** @(RTLC8a1)@ @ObjectOperation@
@@ -224,7 +224,7 @@ h3(#livemap). LiveMap
224
224
* @(RTLM2)@ Represents the map object type for Object IDs of type @map@
225
225
* @(RTLM3)@ Holds a @Dict<String, ObjectsMapEntry>@ as a private @data@ map
226
226
** @(RTLM3a)@ @ObjectsMapEntry@ entries in a @LiveMap@ have the following attributes in addition to those defined in "OME2":../features#OME2:
227
-
*** @(RTLM3a1)@ @tombstonedAt@ number - a timestamp indicating when this map entry was tombstoned
227
+
*** @(RTLM3a1)@ @tombstonedAt@ (optional) Time - a timestamp indicating when this map entry was tombstoned. This property is nullable, and is non-null if and only if the corresponding @ObjectsMapEntry.tombstone@ is @true@
228
228
* @(RTLM4)@ The zero-value @LiveMap@ is a @LiveMap@ with @data@ set to an empty map
229
229
* @(RTLM18)@ Data updates for a @LiveMap@ are emitted using the @LiveMapUpdate@ object:
**** @(RTLM6d1a)@ This clause has been replaced by "RTLM17a1":#RTLM17a1
287
287
**** @(RTLM6d1b)@ This clause has been replaced by "RTLM17a2":#RTLM17a2
288
288
*** @(RTLM6d2)@ This clause has been replaced by "RTLM17b":#RTLM17b
289
-
* @(RTLM15)@ An @ObjectOperation@ from @ObjectMessage.operation@ can be applied to a @LiveMap@ in the following way:
289
+
* @(RTLM15)@ An @ObjectOperation@ from @ObjectMessage.operation@ can be applied to a @LiveMap@ by performing the following actions in order:
290
290
** @(RTLM15a)@ A client library may choose to implement this logic as a convenience method named @applyOperation@, which accepts an @ObjectMessage@ instance with an existing @ObjectMessage.operation@ object, with @ObjectMessage.operation.objectId@ matching the Object ID of this @LiveMap@. This @ObjectMessage@ represents the operation to be applied to this @LiveMap@
291
-
** @(RTLM15b)@ If @ObjectMessage.operation@ cannot be applied based on the result of "@LiveObject.canApplyOperation@":#RTLO4a, log a debug or trace message indicating that the operation cannot be applied because its serial value is not newer than the object's, and discard the @ObjectMessage@ without taking any action
291
+
** @(RTLM15b)@ If @ObjectMessage.operation@ cannot be applied based on the result of "@LiveObject.canApplyOperation@":#RTLO4a, log a debug or trace message indicating that the operation cannot be applied because its serial value is not newer than the object's, and discard the @ObjectMessage@ without taking any further action
292
292
** @(RTLM15c)@ Set the entry in the private @siteTimeserials@ map at the key @ObjectMessage.siteCode@ to equal @ObjectMessage.serial@
293
-
** @(RTLM15e)@ If @LiveMap.isTombstone@ is @true@, the operation cannot be applied to the object. Finish processing the @ObjectMessage@ without taking any action. No data update event is emitted
293
+
** @(RTLM15e)@ If @LiveMap.isTombstone@ is @true@, the operation cannot be applied to the object. Finish processing the @ObjectMessage@ without taking any further action. No data update event is emitted
294
294
** @(RTLM15d)@ The @ObjectMessage.operation.action@ field (see "@ObjectOperationAction@":../features#OOP2) determines the type of operation to apply:
295
295
*** @(RTLM15d1)@ If @ObjectMessage.operation.action@ is set to @MAP_CREATE@, apply the operation as described in "RTLM16":#RTLM16, passing in @ObjectMessage.operation@
296
296
**** @(RTLM15d1a)@ Emit the @LiveMapUpdate@ object returned as a result of applying the operation
@@ -300,7 +300,7 @@ h3(#livemap). LiveMap
300
300
**** @(RTLM15d3a)@ Emit the @LiveMapUpdate@ object returned as a result of applying the operation
301
301
*** @(RTLM15d5)@ If @ObjectMessage.operation.action@ is set to @OBJECT_DELETE@, apply the operation as described in "RTLO5":#RTLO5, passing in @ObjectMessage@
302
302
**** @(RTLM15d5a)@ Emit a @LiveMapUpdate@ object with @LiveMapUpdate.update@ consisting of entries for the keys that were removed as a result of applying the @OBJECT_DELETE@ operation, each set to @removed@
303
-
*** @(RTLM15d4)@ Otherwise, log a warning that an object operation message with an unsupported action has been received, and discard the current @ObjectMessage@ without taking any action. No data update event is emitted
303
+
*** @(RTLM15d4)@ Otherwise, log a warning that an object operation message with an unsupported action has been received, and discard the current @ObjectMessage@ without taking any further action. No data update event is emitted
304
304
* @(RTLM16)@ A @MAP_CREATE@ operation can be applied to a @LiveMap@ in the following way:
305
305
** @(RTLM16a)@ Expects the following argument:
306
306
*** @(RTLM16a1)@ @ObjectOperation@
@@ -332,7 +332,7 @@ h3(#livemap). LiveMap
332
332
** @(RTLM8c)@ Expects the following arguments:
333
333
*** @(RTLM8c1)@ @ObjectsMapOp@
334
334
*** @(RTLM8c2)@ @serial@ string - operation's serial value
335
-
*** @(RTLM8c3)@ @serialTimestamp@ string - operation's serial timestamp value
335
+
*** @(RTLM8c3)@ @serialTimestamp@ Time - operation's serial timestamp value
336
336
** @(RTLM8d)@ The return type is a @LiveMapUpdate@ object, which indicates the data update for this @LiveMap@
337
337
** @(RTLM8a)@ If an entry exists in the private @data@ for the specified key:
338
338
*** @(RTLM8a1)@ If the operation cannot be applied as per "RTLM9":#RTLM9, discard the operation without taking any action. Return a @LiveMapUpdate@ object with @LiveMapUpdate.noop@ set to @true@, indicating that no update was made to the object
0 commit comments