diff --git a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/SubscriptionManager.kt b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/MutableSubscriptionCache.kt similarity index 84% rename from ammolite/src/main/java/com/vitorpamplona/ammolite/relays/SubscriptionManager.kt rename to ammolite/src/main/java/com/vitorpamplona/ammolite/relays/MutableSubscriptionCache.kt index 76e69c957..f54855f0b 100644 --- a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/SubscriptionManager.kt +++ b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/MutableSubscriptionCache.kt @@ -20,7 +20,7 @@ */ package com.vitorpamplona.ammolite.relays -class MutableSubscriptionManager : SubscriptionManager { +class MutableSubscriptionCache : SubscriptionCache { private var subscriptions = mapOf>() fun add( @@ -42,13 +42,3 @@ class MutableSubscriptionManager : SubscriptionManager { override fun getSubscriptionFiltersOrNull(subId: String): List? = subscriptions[subId] } - -interface SubscriptionManager { - fun isActive(subscriptionId: String): Boolean - - fun allSubscriptions(): Map> - - fun getSubscriptionFilters(subId: String): List - - fun getSubscriptionFiltersOrNull(subId: String): List -} diff --git a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/NostrClient.kt b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/NostrClient.kt index e3b49eeb0..24f6cc7d9 100644 --- a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/NostrClient.kt +++ b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/NostrClient.kt @@ -41,7 +41,7 @@ class NostrClient( private val websocketBuilder: WebsocketBuilderFactory, ) : RelayPool.Listener { private val relayPool: RelayPool = RelayPool() - private val activeSubscriptions: MutableSubscriptionManager = MutableSubscriptionManager() + private val activeSubscriptions: MutableSubscriptionCache = MutableSubscriptionCache() private var listeners = setOf() fun buildRelay(it: RelaySetupInfoToConnect): Relay = Relay(it.url, it.read, it.write, it.forceProxy, it.feedTypes, websocketBuilder, activeSubscriptions) diff --git a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/Relay.kt b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/Relay.kt index fb704e94a..ee7fbd304 100644 --- a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/Relay.kt +++ b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/Relay.kt @@ -49,7 +49,7 @@ val EVENT_FINDER_TYPES = class RelaySubFilter( val url: String, val activeTypes: Set, - val subs: SubscriptionManager, + val subs: SubscriptionCache, ) : SubscriptionCollection { fun isMatch(filter: TypedFilter) = activeTypes.any { it in filter.types } && filter.isValidFor(url) @@ -95,7 +95,7 @@ class Relay( val forceProxy: Boolean = false, val activeTypes: Set, socketBuilderFactory: WebsocketBuilderFactory, - subs: SubscriptionManager, + subs: SubscriptionCache, ) : SimpleClientRelay.Listener { private var listeners = setOf() diff --git a/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/SubscriptionCache.kt b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/SubscriptionCache.kt new file mode 100644 index 000000000..85d663167 --- /dev/null +++ b/ammolite/src/main/java/com/vitorpamplona/ammolite/relays/SubscriptionCache.kt @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2024 Vitor Pamplona + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.vitorpamplona.ammolite.relays + +interface SubscriptionCache { + fun isActive(subscriptionId: String): Boolean + + fun allSubscriptions(): Map> + + fun getSubscriptionFilters(subId: String): List + + fun getSubscriptionFiltersOrNull(subId: String): List? +}