Skip to content

Commit e8aa203

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 08b6835 + 1552dea commit e8aa203

2 files changed

Lines changed: 205 additions & 19 deletions

File tree

src/features.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4821,6 +4821,8 @@ Presence ops.
48214821
`OBJECT_SYNC`
48224822
- `(OM2h)` `serial` string - an opaque string that uniquely identifies
48234823
this object message
4824+
- `(OM2j)` `serialTimestamp` Time - a timestamp from the `serial`
4825+
field
48244826
- `(OM2i)` `siteCode` string - an opaque string used as a key to
48254827
update the map of `serial` values on an object
48264828
- `(OM3)` The size of the `ObjectMessage` for [TO3l8](#TO3l8) is
@@ -4996,6 +4998,8 @@ Presence ops.
49964998
been removed
49974999
- `(OME2b)` `timeserial` string - the `serial`\#OM2h value of the last
49985000
operation that was applied to the map entry
5001+
- `(OME2d)` `serialTimestamp` Time - a timestamp from the `timeserial`
5002+
field. It is only present if `tombstone` is `true`
49995003
- `(OME2c)` `data` `ObjectData` object - the data that represents the
50005004
value of the map entry.
50015005
- `(OME3)` The size of the `ObjectsMapEntry` is calculated as follows:
@@ -5484,9 +5488,11 @@ Presence ops.
54845488
server will send a `HEARTBEAT` or transport-level ping to the
54855489
client. If the value is 0, the server will allow arbitrarily-long
54865490
levels of inactivity.
5487-
5488-
#### ChannelProperties
5489-
5491+
- `(CD2i)` `objectsGCGracePeriod` integer - the length of time, in
5492+
milliseconds, that the client library must wait before releasing
5493+
resources for tombstoned objects and map entries (see
5494+
[RTO10](../objects-features#RTO10))\
5495+
h4. ChannelProperties
54905496
- `(CP1)` properties of a channel and its state
54915497
- `(CP2)` The attributes of `ChannelProperties` consist of:
54925498
- `(CP2a)` `attachSerial` string - contains the `channelSerial` that
@@ -6539,6 +6545,7 @@ wildcard to mean all clauses with a given prefix.
65396545
maxMessageSize: Int // CD2c
65406546
serverId: String // CD2g
65416547
maxIdleInterval: Duration // CD2h
6548+
objectsGCGracePeriod: Int // CD2i
65426549

65436550
class Message: // TM*
65446551
constructor(name: String?, data: Data?) // TM4
@@ -6588,6 +6595,7 @@ wildcard to mean all clauses with a given prefix.
65886595
operation: ObjectOperation? // OM2f
65896596
object: ObjectState? // OM2g
65906597
serial: String // OM2h
6598+
serialTimestamp: Time? // OM2j
65916599
siteCode: String // OM2i
65926600

65936601
class ObjectOperation // OOP*, internal
@@ -6626,6 +6634,7 @@ wildcard to mean all clauses with a given prefix.
66266634
class ObjectsMapEntry // OME*, internal
66276635
tombstone: Boolean? // OME2a
66286636
timeserial: String? // OME2b
6637+
serialTimestamp: Time? // OME2d
66296638
data: ObjectData? // OME2c
66306639

66316640
class ObjectData // OD*, internal

0 commit comments

Comments
 (0)