@@ -48,8 +48,9 @@ interface CallbackManager {
4848
4949}
5050
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 >
5354
5455class CallbackManagerImpl (
5556 private val serializer : SupabaseSerializer = KotlinXSerializer ()
@@ -59,12 +60,13 @@ class CallbackManagerImpl(
5960 private val _serverChanges = AtomicReference (listOf<PostgresJoinConfig >())
6061 val serverChanges: List <PostgresJoinConfig > get() = _serverChanges .load()
6162
62- private val presenceCallbacks = AtomicReference <PersistentMap < Int , RealtimeCallback . PresenceCallback > >(persistentHashMapOf())
63+ private val presenceCallbacks = AtomicReference <PresenceMap >(persistentHashMapOf())
6364
6465 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
6567 private val broadcastEventId = AtomicReference <PersistentMap <Int , String >>(persistentHashMapOf())
6668
67- private val postgresCallbacks = AtomicReference <PersistentMap < Int , RealtimeCallback . PostgresCallback > >(persistentHashMapOf())
69+ private val postgresCallbacks = AtomicReference <PostgresMap >(persistentHashMapOf())
6870
6971 override fun addBroadcastCallback (event : String , callback : (JsonObject ) -> Unit ): RealtimeCallbackId .Broadcast {
7072 val id = nextId.fetchAndIncrement()
0 commit comments