@@ -15,6 +15,7 @@ internal struct InboundWireObjectMessage {
1515 internal var object : WireObjectState ? // OM2g
1616 internal var serial : String ? // OM2h
1717 internal var siteCode : String ? // OM2i
18+ internal var serialTimestamp : Date ? // OM2j
1819}
1920
2021/// An `ObjectMessage` to be sent in the `state` property of an `OBJECT` `ProtocolMessage`.
@@ -28,6 +29,7 @@ internal struct OutboundWireObjectMessage {
2829 internal var object : WireObjectState ? // OM2g
2930 internal var serial : String ? // OM2h
3031 internal var siteCode : String ? // OM2i
32+ internal var serialTimestamp : Date ? // OM2j
3133}
3234
3335/// The keys for decoding an `InboundWireObjectMessage` or encoding an `OutboundWireObjectMessage`.
@@ -41,6 +43,7 @@ internal enum WireObjectMessageWireKey: String {
4143 case object
4244 case serial
4345 case siteCode
46+ case serialTimestamp
4447}
4548
4649internal extension InboundWireObjectMessage {
@@ -96,6 +99,7 @@ internal extension InboundWireObjectMessage {
9699 object = try wireObject. optionalDecodableValueForKey ( WireObjectMessageWireKey . object. rawValue)
97100 serial = try wireObject. optionalStringValueForKey ( WireObjectMessageWireKey . serial. rawValue)
98101 siteCode = try wireObject. optionalStringValueForKey ( WireObjectMessageWireKey . siteCode. rawValue)
102+ serialTimestamp = try wireObject. optionalAblyProtocolDateValueForKey ( WireObjectMessageWireKey . serialTimestamp. rawValue)
99103 }
100104}
101105
@@ -131,6 +135,9 @@ extension OutboundWireObjectMessage: WireObjectEncodable {
131135 if let object {
132136 result [ WireObjectMessageWireKey . object. rawValue] = . object( object. toWireObject)
133137 }
138+ if let serialTimestamp {
139+ result [ WireObjectMessageWireKey . serialTimestamp. rawValue] = . number( NSNumber ( value: serialTimestamp. timeIntervalSince1970 * 1000 ) )
140+ }
134141 return result
135142 }
136143}
@@ -386,19 +393,22 @@ internal struct WireObjectsMapEntry {
386393 internal var tombstone : Bool ? // OME2a
387394 internal var timeserial : String ? // OME2b
388395 internal var data : WireObjectData // OME2c
396+ internal var serialTimestamp : Date ? // OME2d
389397}
390398
391399extension WireObjectsMapEntry : WireObjectCodable {
392400 internal enum WireKey : String {
393401 case tombstone
394402 case timeserial
395403 case data
404+ case serialTimestamp
396405 }
397406
398407 internal init ( wireObject: [ String : WireValue ] ) throws ( InternalError) {
399408 tombstone = try wireObject. optionalBoolValueForKey ( WireKey . tombstone. rawValue)
400409 timeserial = try wireObject. optionalStringValueForKey ( WireKey . timeserial. rawValue)
401410 data = try wireObject. decodableValueForKey ( WireKey . data. rawValue)
411+ serialTimestamp = try wireObject. optionalAblyProtocolDateValueForKey ( WireKey . serialTimestamp. rawValue)
402412 }
403413
404414 internal var toWireObject : [ String : WireValue ] {
@@ -412,6 +422,9 @@ extension WireObjectsMapEntry: WireObjectCodable {
412422 if let timeserial {
413423 result [ WireKey . timeserial. rawValue] = . string( timeserial)
414424 }
425+ if let serialTimestamp {
426+ result [ WireKey . serialTimestamp. rawValue] = . number( NSNumber ( value: serialTimestamp. timeIntervalSince1970 * 1000 ) )
427+ }
415428
416429 return result
417430 }
0 commit comments