Skip to content
Snippets Groups Projects
Verified Commit fafd18f3 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Fixing crash clusters 5101dbb1 and 935b3057

parent e4b7de79
No related branches found
No related tags found
No related merge requests found
Pipeline #511 canceled
...@@ -85,21 +85,24 @@ class Session( ...@@ -85,21 +85,24 @@ class Session(
override val backlogManager = BacklogManager(this, backlogStorage) override val backlogManager = BacklogManager(this, backlogStorage)
override val bufferViewManager = BufferViewManager(this) override val bufferViewManager = BufferViewManager(this)
override val bufferSyncer = BufferSyncer(this, notificationManager) override val bufferSyncer = BufferSyncer(this, notificationManager)
override val certManagers = mutableMapOf<IdentityId, CertManager>() override var certManagers = emptyMap<IdentityId, CertManager>()
private set
override val coreInfo = CoreInfo(this) override val coreInfo = CoreInfo(this)
override val dccConfig = DccConfig(this) override val dccConfig = DccConfig(this)
override val identities = mutableMapOf<IdentityId, Identity>() override var identities = emptyMap<IdentityId, Identity>()
private set
private val live_identities = BehaviorSubject.createDefault(Unit) private val live_identities = BehaviorSubject.createDefault(Unit)
override fun liveIdentities(): Observable<Map<IdentityId, Identity>> = live_identities.map { identities.toMap() } override fun liveIdentities(): Observable<Map<IdentityId, Identity>> = live_identities.map { identities }
override val ignoreListManager = IgnoreListManager(this) override val ignoreListManager = IgnoreListManager(this)
override val highlightRuleManager = HighlightRuleManager(this) override val highlightRuleManager = HighlightRuleManager(this)
override val ircListHelper = IrcListHelper(this) override val ircListHelper = IrcListHelper(this)
override val networks = mutableMapOf<NetworkId, Network>() override var networks = emptyMap<NetworkId, Network>()
private set
private val live_networks = BehaviorSubject.createDefault(Unit) private val live_networks = BehaviorSubject.createDefault(Unit)
override fun liveNetworks(): Observable<Map<NetworkId, Network>> = live_networks.map { networks.toMap() } override fun liveNetworks(): Observable<Map<NetworkId, Network>> = live_networks.map { networks }
private val network_added = PublishSubject.create<NetworkId>() private val network_added = PublishSubject.create<NetworkId>()
override fun liveNetworkAdded(): Observable<NetworkId> = network_added override fun liveNetworkAdded(): Observable<NetworkId> = network_added
...@@ -183,14 +186,15 @@ class Session( ...@@ -183,14 +186,15 @@ class Session(
override fun addNetwork(networkId: NetworkId) { override fun addNetwork(networkId: NetworkId) {
val network = Network(networkId, this) val network = Network(networkId, this)
networks[networkId] = network networks = networks + Pair(networkId, network)
synchronize(network) synchronize(network)
live_networks.onNext(Unit) live_networks.onNext(Unit)
network_added.onNext(networkId) network_added.onNext(networkId)
} }
override fun removeNetwork(networkId: NetworkId) { override fun removeNetwork(networkId: NetworkId) {
val network = networks.remove(networkId) val network = networks[networkId]
networks = networks - networkId
stopSynchronize(network) stopSynchronize(network)
live_networks.onNext(Unit) live_networks.onNext(Unit)
} }
...@@ -198,13 +202,14 @@ class Session( ...@@ -198,13 +202,14 @@ class Session(
override fun addIdentity(initData: QVariantMap) { override fun addIdentity(initData: QVariantMap) {
val identity = Identity(this) val identity = Identity(this)
identity.fromVariantMap(initData) identity.fromVariantMap(initData)
identities[identity.id()] = identity identities = identities + Pair(identity.id(), identity)
synchronize(identity) synchronize(identity)
live_identities.onNext(Unit) live_identities.onNext(Unit)
} }
override fun removeIdentity(identityId: IdentityId) { override fun removeIdentity(identityId: IdentityId) {
val identity = identities.remove(identityId) val identity = identities[identityId]
identities = identities - identityId
stopSynchronize(identity) stopSynchronize(identity)
live_identities.onNext(Unit) live_identities.onNext(Unit)
} }
...@@ -219,23 +224,29 @@ class Session( ...@@ -219,23 +224,29 @@ class Session(
handlerService.backend { handlerService.backend {
bufferSyncer.initSetBufferInfos(f.bufferInfos) bufferSyncer.initSetBufferInfos(f.bufferInfos)
f.networkIds?.forEach { networks = f.networkIds?.map {
val network = Network(it.value(NetworkId(-1)), this) Pair(it.value(NetworkId(-1)), Network(it.value(NetworkId(-1)), this))
networks[network.networkId()] = network }?.toMap().orEmpty()
}
live_networks.onNext(Unit) live_networks.onNext(Unit)
f.identities?.forEach { val identityCertmanagerPairs = f.identities?.map {
val identity = Identity(this) val identity = Identity(this)
identity.fromVariantMap(it.valueOr(::emptyMap)) identity.fromVariantMap(it.valueOr(::emptyMap))
identity.initialized = true identity.initialized = true
identity.init() identity.init()
identities[identity.id()] = identity
synchronize(identity) synchronize(identity)
val certManager = CertManager(identity.id(), this) val certManager = CertManager(identity.id(), this)
certManagers[identity.id()] = certManager Pair(identity, certManager)
} }?.toMap().orEmpty()
identities = identityCertmanagerPairs.map { (identity, _) ->
Pair(identity.id(), identity)
}.toMap()
certManagers = identityCertmanagerPairs.map { (identity, certManager) ->
Pair(identity.id(), certManager)
}.toMap()
isInitializing = true isInitializing = true
networks.values.forEach { syncableObject -> this.synchronize(syncableObject, true) } networks.values.forEach { syncableObject -> this.synchronize(syncableObject, true) }
...@@ -318,10 +329,10 @@ class Session( ...@@ -318,10 +329,10 @@ class Session(
backlogManager.deinit() backlogManager.deinit()
rpcHandler.deinit() rpcHandler.deinit()
certManagers.clear() certManagers = emptyMap()
identities.clear() identities = emptyMap()
live_identities.onNext(Unit) live_identities.onNext(Unit)
networks.clear() networks = emptyMap()
live_networks.onNext(Unit) live_networks.onNext(Unit)
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment