Skip to content

Commit d1e5b18

Browse files
Apply OBJECT_DELETE operation
Based on spec referenced in 040987b; same comment re testing applies too.
1 parent 9ebc279 commit d1e5b18

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

Sources/AblyLiveObjects/Internal/InternalDefaultLiveCounter.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ internal final class InternalDefaultLiveCounter: Sendable {
196196
objectMessageSerialTimestamp: objectMessageSerialTimestamp,
197197
objectsPool: &objectsPool,
198198
logger: logger,
199+
clock: clock,
199200
userCallbackQueue: userCallbackQueue,
200201
)
201202
}
@@ -294,6 +295,7 @@ internal final class InternalDefaultLiveCounter: Sendable {
294295
objectMessageSerialTimestamp: Date?,
295296
objectsPool: inout ObjectsPool,
296297
logger: Logger,
298+
clock: SimpleClock,
297299
userCallbackQueue: DispatchQueue,
298300
) {
299301
guard let applicableOperation = liveObjectMutableState.canApplyOperation(objectMessageSerial: objectMessageSerial, objectMessageSiteCode: objectMessageSiteCode, logger: logger) else {
@@ -325,6 +327,18 @@ internal final class InternalDefaultLiveCounter: Sendable {
325327
let update = applyCounterIncOperation(operation.counterOp)
326328
// RTLC7d2a
327329
liveObjectMutableState.emit(update, on: userCallbackQueue)
330+
case .known(.objectDelete):
331+
let dataBeforeApplyingOperation = data
332+
333+
// RTLC7d4
334+
applyObjectDeleteOperation(
335+
objectMessageSerialTimestamp: objectMessageSerialTimestamp,
336+
logger: logger,
337+
clock: clock,
338+
)
339+
340+
// RTLC7d4a
341+
liveObjectMutableState.emit(.update(.init(amount: -dataBeforeApplyingOperation)), on: userCallbackQueue)
328342
default:
329343
// RTLC7d3
330344
logger.log("Operation \(operation) has unsupported action for LiveCounter; discarding", level: .warn)

Sources/AblyLiveObjects/Internal/InternalDefaultLiveMap.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,18 @@ internal final class InternalDefaultLiveMap: Sendable {
541541
)
542542
// RTLM15d3a
543543
liveObjectMutableState.emit(update, on: userCallbackQueue)
544+
case .known(.objectDelete):
545+
let dataBeforeApplyingOperation = data
546+
547+
// RTLM15d5
548+
applyObjectDeleteOperation(
549+
objectMessageSerialTimestamp: objectMessageSerialTimestamp,
550+
logger: logger,
551+
clock: clock,
552+
)
553+
554+
// RTLM15d5a
555+
liveObjectMutableState.emit(.update(.init(update: dataBeforeApplyingOperation.mapValues { _ in .removed })), on: userCallbackQueue)
544556
default:
545557
// RTLM15d4
546558
logger.log("Operation \(operation) has unsupported action for LiveMap; discarding", level: .warn)

0 commit comments

Comments
 (0)