Skip to content

Commit 51eb113

Browse files
Apply OBJECT_DELETE operation
1 parent 829c5d7 commit 51eb113

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
@@ -203,6 +203,7 @@ internal final class InternalDefaultLiveCounter: Sendable {
203203
objectMessageSerialTimestamp: objectMessageSerialTimestamp,
204204
objectsPool: &objectsPool,
205205
logger: logger,
206+
clock: clock,
206207
userCallbackQueue: userCallbackQueue,
207208
)
208209
}
@@ -301,6 +302,7 @@ internal final class InternalDefaultLiveCounter: Sendable {
301302
objectMessageSerialTimestamp: Date?,
302303
objectsPool: inout ObjectsPool,
303304
logger: Logger,
305+
clock: SimpleClock,
304306
userCallbackQueue: DispatchQueue,
305307
) {
306308
guard let applicableOperation = liveObjectMutableState.canApplyOperation(objectMessageSerial: objectMessageSerial, objectMessageSiteCode: objectMessageSiteCode, logger: logger) else {
@@ -332,6 +334,18 @@ internal final class InternalDefaultLiveCounter: Sendable {
332334
let update = applyCounterIncOperation(operation.counterOp)
333335
// RTLC7d2a
334336
liveObjectMutableState.emit(update, on: userCallbackQueue)
337+
case .known(.objectDelete):
338+
let dataBeforeApplyingOperation = data
339+
340+
// RTLC7d4
341+
applyObjectDeleteOperation(
342+
objectMessageSerialTimestamp: objectMessageSerialTimestamp,
343+
logger: logger,
344+
clock: clock,
345+
)
346+
347+
// RTLC7d4a
348+
liveObjectMutableState.emit(.update(.init(amount: -dataBeforeApplyingOperation)), on: userCallbackQueue)
335349
default:
336350
// RTLC7d3
337351
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
@@ -562,6 +562,18 @@ internal final class InternalDefaultLiveMap: Sendable {
562562
)
563563
// RTLM15d3a
564564
liveObjectMutableState.emit(update, on: userCallbackQueue)
565+
case .known(.objectDelete):
566+
let dataBeforeApplyingOperation = data
567+
568+
// RTLM15d5
569+
applyObjectDeleteOperation(
570+
objectMessageSerialTimestamp: objectMessageSerialTimestamp,
571+
logger: logger,
572+
clock: clock,
573+
)
574+
575+
// RTLM15d5a
576+
liveObjectMutableState.emit(.update(.init(update: dataBeforeApplyingOperation.mapValues { _ in .removed })), on: userCallbackQueue)
565577
default:
566578
// RTLM15d4
567579
logger.log("Operation \(operation) has unsupported action for LiveMap; discarding", level: .warn)

0 commit comments

Comments
 (0)