@@ -48,8 +48,9 @@ interface CallbackManager {
48
48
49
49
}
50
50
51
- typealias BroadcastMap = PersistentMap <String , PersistentList <RealtimeCallback .BroadcastCallback >>
52
-
51
+ private typealias BroadcastMap = PersistentMap <String , PersistentList <RealtimeCallback .BroadcastCallback >>
52
+ private typealias PresenceMap = PersistentMap <Int , RealtimeCallback .PresenceCallback >
53
+ private typealias PostgresMap = PersistentMap <Int , RealtimeCallback .PostgresCallback >
53
54
54
55
class CallbackManagerImpl (
55
56
private val serializer : SupabaseSerializer = KotlinXSerializer ()
@@ -59,12 +60,13 @@ class CallbackManagerImpl(
59
60
private val _serverChanges = AtomicReference (listOf<PostgresJoinConfig >())
60
61
val serverChanges: List <PostgresJoinConfig > get() = _serverChanges .load()
61
62
62
- private val presenceCallbacks = AtomicReference <PersistentMap < Int , RealtimeCallback . PresenceCallback > >(persistentHashMapOf())
63
+ private val presenceCallbacks = AtomicReference <PresenceMap >(persistentHashMapOf())
63
64
64
65
private val broadcastCallbacks = AtomicReference <BroadcastMap >(persistentHashMapOf())
66
+ // Additional map to know from which list a callback may be removed in broadcastCallbacks without searching through the whole map
65
67
private val broadcastEventId = AtomicReference <PersistentMap <Int , String >>(persistentHashMapOf())
66
68
67
- private val postgresCallbacks = AtomicReference <PersistentMap < Int , RealtimeCallback . PostgresCallback > >(persistentHashMapOf())
69
+ private val postgresCallbacks = AtomicReference <PostgresMap >(persistentHashMapOf())
68
70
69
71
override fun addBroadcastCallback (event : String , callback : (JsonObject ) -> Unit ): RealtimeCallbackId .Broadcast {
70
72
val id = nextId.fetchAndIncrement()
0 commit comments