@@ -45,31 +45,36 @@ internal final class InternalDefaultLiveMap: Sendable {
4545 }
4646
4747 private let logger : AblyPlugin . Logger
48+ private let userCallbackQueue : DispatchQueue
4849
4950 // MARK: - Initialization
5051
5152 internal convenience init (
5253 testsOnly_data data: [ String : ObjectsMapEntry ] ,
5354 objectID: String ,
5455 testsOnly_semantics semantics: WireEnum < ObjectsMapSemantics > ? = nil ,
55- logger: AblyPlugin . Logger
56+ logger: AblyPlugin . Logger ,
57+ userCallbackQueue: DispatchQueue ,
5658 ) {
5759 self . init (
5860 data: data,
5961 objectID: objectID,
6062 semantics: semantics,
6163 logger: logger,
64+ userCallbackQueue: userCallbackQueue,
6265 )
6366 }
6467
6568 private init (
6669 data: [ String : ObjectsMapEntry ] ,
6770 objectID: String ,
6871 semantics: WireEnum < ObjectsMapSemantics > ? ,
69- logger: AblyPlugin . Logger
72+ logger: AblyPlugin . Logger ,
73+ userCallbackQueue: DispatchQueue ,
7074 ) {
7175 mutableState = . init( liveObject: . init( objectID: objectID) , data: data, semantics: semantics)
7276 self . logger = logger
77+ self . userCallbackQueue = userCallbackQueue
7378 }
7479
7580 /// Creates a "zero-value LiveMap", per RTLM4.
@@ -81,12 +86,14 @@ internal final class InternalDefaultLiveMap: Sendable {
8186 objectID: String ,
8287 semantics: WireEnum < ObjectsMapSemantics > ? = nil ,
8388 logger: AblyPlugin . Logger ,
89+ userCallbackQueue: DispatchQueue ,
8490 ) -> Self {
8591 . init(
8692 data: [ : ] ,
8793 objectID: objectID,
8894 semantics: semantics,
8995 logger: logger,
96+ userCallbackQueue: userCallbackQueue,
9097 )
9198 }
9299
@@ -211,6 +218,7 @@ internal final class InternalDefaultLiveMap: Sendable {
211218 using: state,
212219 objectsPool: & objectsPool,
213220 logger: logger,
221+ userCallbackQueue: userCallbackQueue,
214222 )
215223 }
216224 }
@@ -222,6 +230,7 @@ internal final class InternalDefaultLiveMap: Sendable {
222230 from: operation,
223231 objectsPool: & objectsPool,
224232 logger: logger,
233+ userCallbackQueue: userCallbackQueue,
225234 )
226235 }
227236 }
@@ -233,6 +242,7 @@ internal final class InternalDefaultLiveMap: Sendable {
233242 operation,
234243 objectsPool: & objectsPool,
235244 logger: logger,
245+ userCallbackQueue: userCallbackQueue,
236246 )
237247 }
238248 }
@@ -251,6 +261,7 @@ internal final class InternalDefaultLiveMap: Sendable {
251261 objectMessageSiteCode: objectMessageSiteCode,
252262 objectsPool: & objectsPool,
253263 logger: logger,
264+ userCallbackQueue: userCallbackQueue,
254265 )
255266 }
256267 }
@@ -271,6 +282,7 @@ internal final class InternalDefaultLiveMap: Sendable {
271282 operationData: operationData,
272283 objectsPool: & objectsPool,
273284 logger: logger,
285+ userCallbackQueue: userCallbackQueue,
274286 )
275287 }
276288 }
@@ -314,6 +326,7 @@ internal final class InternalDefaultLiveMap: Sendable {
314326 using state: ObjectState ,
315327 objectsPool: inout ObjectsPool ,
316328 logger: AblyPlugin . Logger ,
329+ userCallbackQueue: DispatchQueue ,
317330 ) {
318331 // RTLM6a: Replace the private siteTimeserials with the value from ObjectState.siteTimeserials
319332 liveObject. siteTimeserials = state. siteTimeserials
@@ -330,6 +343,7 @@ internal final class InternalDefaultLiveMap: Sendable {
330343 from: createOp,
331344 objectsPool: & objectsPool,
332345 logger: logger,
346+ userCallbackQueue: userCallbackQueue,
333347 )
334348 }
335349 }
@@ -339,6 +353,7 @@ internal final class InternalDefaultLiveMap: Sendable {
339353 from operation: ObjectOperation ,
340354 objectsPool: inout ObjectsPool ,
341355 logger: AblyPlugin . Logger ,
356+ userCallbackQueue: DispatchQueue ,
342357 ) {
343358 // RTLM17a: For each key–ObjectsMapEntry pair in ObjectOperation.map.entries
344359 if let entries = operation. map? . entries {
@@ -359,6 +374,7 @@ internal final class InternalDefaultLiveMap: Sendable {
359374 operationData: entry. data,
360375 objectsPool: & objectsPool,
361376 logger: logger,
377+ userCallbackQueue: userCallbackQueue,
362378 )
363379 }
364380 }
@@ -374,6 +390,7 @@ internal final class InternalDefaultLiveMap: Sendable {
374390 objectMessageSiteCode: String ? ,
375391 objectsPool: inout ObjectsPool ,
376392 logger: Logger ,
393+ userCallbackQueue: DispatchQueue ,
377394 ) {
378395 guard let applicableOperation = liveObject. canApplyOperation ( objectMessageSerial: objectMessageSerial, objectMessageSiteCode: objectMessageSiteCode, logger: logger) else {
379396 // RTLM15b
@@ -391,6 +408,7 @@ internal final class InternalDefaultLiveMap: Sendable {
391408 operation,
392409 objectsPool: & objectsPool,
393410 logger: logger,
411+ userCallbackQueue: userCallbackQueue,
394412 )
395413 case . known( . mapSet) :
396414 guard let mapOp = operation. mapOp else {
@@ -409,6 +427,7 @@ internal final class InternalDefaultLiveMap: Sendable {
409427 operationData: data,
410428 objectsPool: & objectsPool,
411429 logger: logger,
430+ userCallbackQueue: userCallbackQueue,
412431 )
413432 case . known( . mapRemove) :
414433 guard let mapOp = operation. mapOp else {
@@ -433,6 +452,7 @@ internal final class InternalDefaultLiveMap: Sendable {
433452 operationData: ObjectData ,
434453 objectsPool: inout ObjectsPool ,
435454 logger: AblyPlugin . Logger ,
455+ userCallbackQueue: DispatchQueue ,
436456 ) {
437457 // RTLM7a: If an entry exists in the private data for the specified key
438458 if let existingEntry = data [ key] {
@@ -459,7 +479,7 @@ internal final class InternalDefaultLiveMap: Sendable {
459479 // RTLM7c: If the operation has a non-empty ObjectData.objectId attribute
460480 if let objectId = operationData. objectId, !objectId. isEmpty {
461481 // RTLM7c1: Create a zero-value LiveObject in the internal ObjectsPool per RTO6
462- _ = objectsPool. createZeroValueObject ( forObjectID: objectId, logger: logger)
482+ _ = objectsPool. createZeroValueObject ( forObjectID: objectId, logger: logger, userCallbackQueue : userCallbackQueue )
463483 }
464484 }
465485
@@ -535,6 +555,7 @@ internal final class InternalDefaultLiveMap: Sendable {
535555 _ operation: ObjectOperation ,
536556 objectsPool: inout ObjectsPool ,
537557 logger: AblyPlugin . Logger ,
558+ userCallbackQueue: DispatchQueue ,
538559 ) {
539560 if liveObject. createOperationIsMerged {
540561 // RTLM16b
@@ -549,6 +570,7 @@ internal final class InternalDefaultLiveMap: Sendable {
549570 from: operation,
550571 objectsPool: & objectsPool,
551572 logger: logger,
573+ userCallbackQueue: userCallbackQueue,
552574 )
553575 }
554576
0 commit comments