diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-12-22 14:38:16 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-12-22 14:38:16 +0000 |
| commit | f7546879af9a692fd466772c9af772ada8aca68e (patch) | |
| tree | 049de66b90c91cb65cf68d4fa620f788140280eb /src/sync/relay_connection.rs | |
| parent | 541f34a207047b26547154e7d631005d456f12fd (diff) | |
fix: sync consoldate subscription count
Diffstat (limited to 'src/sync/relay_connection.rs')
| -rw-r--r-- | src/sync/relay_connection.rs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/sync/relay_connection.rs b/src/sync/relay_connection.rs index d69e1ce..de20e0f 100644 --- a/src/sync/relay_connection.rs +++ b/src/sync/relay_connection.rs | |||
| @@ -218,7 +218,11 @@ impl RelayConnection { | |||
| 218 | sub_id = %subscription_id, | 218 | sub_id = %subscription_id, |
| 219 | "Received event" | 219 | "Received event" |
| 220 | ); | 220 | ); |
| 221 | if event_sender.send(RelayEvent::Event(*event, subscription_id.clone())).await.is_err() { | 221 | if event_sender |
| 222 | .send(RelayEvent::Event(*event, subscription_id.clone())) | ||
| 223 | .await | ||
| 224 | .is_err() | ||
| 225 | { | ||
| 222 | tracing::debug!(relay = %url, "Event sender closed, stopping event loop"); | 226 | tracing::debug!(relay = %url, "Event sender closed, stopping event loop"); |
| 223 | break; | 227 | break; |
| 224 | } | 228 | } |
| @@ -242,7 +246,8 @@ impl RelayConnection { | |||
| 242 | } | 246 | } |
| 243 | RelayMessage::Notice(msg) => { | 247 | RelayMessage::Notice(msg) => { |
| 244 | tracing::debug!(relay = %url, message = %msg, "Received NOTICE"); | 248 | tracing::debug!(relay = %url, message = %msg, "Received NOTICE"); |
| 245 | let _ = event_sender.send(RelayEvent::Notice(msg.to_string())).await; | 249 | let _ = |
| 250 | event_sender.send(RelayEvent::Notice(msg.to_string())).await; | ||
| 246 | // Don't break - continue processing events | 251 | // Don't break - continue processing events |
| 247 | } | 252 | } |
| 248 | RelayMessage::Closed { message: msg, .. } => { | 253 | RelayMessage::Closed { message: msg, .. } => { |
| @@ -358,6 +363,21 @@ impl RelayConnection { | |||
| 358 | &self.url | 363 | &self.url |
| 359 | } | 364 | } |
| 360 | 365 | ||
| 366 | /// Get the number of active subscriptions on this connection | ||
| 367 | /// | ||
| 368 | /// Returns the count of subscriptions tracked by the underlying nostr-sdk client. | ||
| 369 | /// This reflects all active REQ subscriptions on the relay, including: | ||
| 370 | /// - Layer 1 announcement subscriptions | ||
| 371 | /// - Layer 2 repo-tagging subscriptions | ||
| 372 | /// - Layer 3 root-event subscriptions | ||
| 373 | /// - Both historic (auto-close) and live subscriptions | ||
| 374 | /// | ||
| 375 | /// # Returns | ||
| 376 | /// The number of active subscriptions | ||
| 377 | pub async fn subscription_count(&self) -> usize { | ||
| 378 | self.client.subscriptions().await.len() | ||
| 379 | } | ||
| 380 | |||
| 361 | /// Disconnect from the relay | 381 | /// Disconnect from the relay |
| 362 | pub async fn disconnect(&self) { | 382 | pub async fn disconnect(&self) { |
| 363 | self.client.disconnect().await; | 383 | self.client.disconnect().await; |