diff options
Diffstat (limited to 'src/sync/rejected_index.rs')
| -rw-r--r-- | src/sync/rejected_index.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/sync/rejected_index.rs b/src/sync/rejected_index.rs index f89783a..80d6b5b 100644 --- a/src/sync/rejected_index.rs +++ b/src/sync/rejected_index.rs | |||
| @@ -85,7 +85,7 @@ | |||
| 85 | //! ``` | 85 | //! ``` |
| 86 | 86 | ||
| 87 | use nostr_sdk::{Event, EventId, PublicKey}; | 87 | use nostr_sdk::{Event, EventId, PublicKey}; |
| 88 | use std::collections::HashMap; | 88 | use std::collections::{HashMap, HashSet}; |
| 89 | use std::sync::{Arc, RwLock}; | 89 | use std::sync::{Arc, RwLock}; |
| 90 | use std::time::{Duration, Instant}; | 90 | use std::time::{Duration, Instant}; |
| 91 | 91 | ||
| @@ -396,6 +396,24 @@ impl RejectedEventsIndex { | |||
| 396 | pub fn cold_index_len(&self) -> usize { | 396 | pub fn cold_index_len(&self) -> usize { |
| 397 | self.cold_index.len() | 397 | self.cold_index.len() |
| 398 | } | 398 | } |
| 399 | |||
| 400 | /// Get all rejected event IDs (from both hot cache and cold index) | ||
| 401 | /// | ||
| 402 | /// Used for excluding rejected events from negentropy sync. | ||
| 403 | /// Note: This creates a snapshot - events may be added/removed concurrently. | ||
| 404 | pub fn get_all_event_ids(&self) -> HashSet<EventId> { | ||
| 405 | let mut ids = HashSet::new(); | ||
| 406 | |||
| 407 | // Add from hot cache | ||
| 408 | let hot_entries = self.hot_cache.entries.read().unwrap(); | ||
| 409 | ids.extend(hot_entries.keys().cloned()); | ||
| 410 | |||
| 411 | // Add from cold index | ||
| 412 | let cold_entries = self.cold_index.entries.read().unwrap(); | ||
| 413 | ids.extend(cold_entries.keys().cloned()); | ||
| 414 | |||
| 415 | ids | ||
| 416 | } | ||
| 399 | } | 417 | } |
| 400 | 418 | ||
| 401 | #[cfg(test)] | 419 | #[cfg(test)] |