Skip to content

Commit 07acd1e

Browse files
authored
Merge pull request #350 from ably/PUB-1828/tombstones-and-object-deletes
[PUB-1828] Add Objects spec for object and map entry tombstones, and OBJECT_DELETE message handling
2 parents a255f8e + b696a9b commit 07acd1e

2 files changed

Lines changed: 81 additions & 11 deletions

File tree

textile/features.textile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1515,6 +1515,7 @@ h4. ObjectMessage
15151515
** @(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@
15161516
** @(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@
15171517
** @(OM2h)@ @serial@ string - an opaque string that uniquely identifies this object message
1518+
** @(OM2j)@ @serialTimestamp@ Time - a timestamp from the @serial@ field
15181519
** @(OM2i)@ @siteCode@ string - an opaque string used as a key to update the map of @serial@ values on an object
15191520
* @(OM3)@ The size of the @ObjectMessage@ for "TO3l8":#TO3l8 is calculated as follows:
15201521
** @(OM3a)@ The size is the sum of the sizes of the @clientId@, @operation@, @object@, and @extras@ properties
@@ -1621,6 +1622,7 @@ h4. ObjectsMapEntry
16211622
* @(OME2)@ The attributes available in an @ObjectsMapEntry@ are:
16221623
** @(OME2a)@ @tombstone@ boolean - indicates whether the map entry has been removed
16231624
** @(OME2b)@ @timeserial@ string - the @serial@#OM2h value of the last operation that was applied to the map entry
1625+
** @(OME2d)@ @serialTimestamp@ Time - a timestamp from the @timeserial@ field. It is only present if @tombstone@ is @true@
16241626
** @(OME2c)@ @data@ @ObjectData@ object - the data that represents the value of the map entry.
16251627
* @(OME3)@ The size of the @ObjectsMapEntry@ is calculated as follows:
16261628
** @(OME3a)@ It is equal to the size of the @data@ property
@@ -1857,7 +1859,7 @@ h4. ConnectionDetails
18571859
** @(CD2f)@ @connectionStateTtl@ is the duration that Ably will persist the connection state when a Realtime client is abruptly disconnected
18581860
** @(CD2g)@ @serverId@ string is a unique identifier for the front-end server that the client has connected to. This server ID is only used for the purposes of debugging
18591861
** @(CD2h)@ @maxIdleInterval@ is the maximum length of time in milliseconds that the server will allow no activity to occur in the server->client direction. After such a period of inactivity, the server will send a @HEARTBEAT@ or transport-level ping to the client. If the value is 0, the server will allow arbitrarily-long levels of inactivity.
1860-
1862+
** @(CD2i)@ @objectsGCGracePeriod@ integer - the length of time, in milliseconds, that the client library must wait before releasing resources for tombstoned objects and map entries (see "RTO10":../objects-features#RTO10)
18611863
h4. ChannelProperties
18621864
* @(CP1)@ properties of a channel and its state
18631865
* @(CP2)@ The attributes of @ChannelProperties@ consist of:
@@ -2570,6 +2572,7 @@ class ConnectionDetails: // CD*, internal
25702572
maxMessageSize: Int // CD2c
25712573
serverId: String // CD2g
25722574
maxIdleInterval: Duration // CD2h
2575+
objectsGCGracePeriod: Int // CD2i
25732576

25742577
class Message: // TM*
25752578
constructor(name: String?, data: Data?) // TM4
@@ -2619,6 +2622,7 @@ class ObjectMessage // OM*, internal
26192622
operation: ObjectOperation? // OM2f
26202623
object: ObjectState? // OM2g
26212624
serial: String // OM2h
2625+
serialTimestamp: Time? // OM2j
26222626
siteCode: String // OM2i
26232627

26242628
class ObjectOperation // OOP*, internal
@@ -2657,6 +2661,7 @@ class ObjectsCounter // OCN*, internal
26572661
class ObjectsMapEntry // OME*, internal
26582662
tombstone: Boolean? // OME2a
26592663
timeserial: String? // OME2b
2664+
serialTimestamp: Time? // OME2d
26602665
data: ObjectData? // OME2c
26612666

26622667
class ObjectData // OD*, internal

0 commit comments

Comments
 (0)