1use std::sync::atomic::{AtomicU64, Ordering};
4
5use async_trait::async_trait;
6
7use crate::{MessageStore, StoreError};
8
9pub struct NoopStore {
13 sender_seq: AtomicU64,
14 target_seq: AtomicU64,
15}
16
17impl Default for NoopStore {
18 fn default() -> Self {
19 Self {
20 sender_seq: AtomicU64::new(1),
21 target_seq: AtomicU64::new(1),
22 }
23 }
24}
25
26impl NoopStore {
27 pub fn new() -> Self {
29 Self::default()
30 }
31}
32
33#[async_trait]
34impl MessageStore for NoopStore {
35 async fn next_sender_seq(&self) -> Result<u64, StoreError> {
36 Ok(self.sender_seq.load(Ordering::SeqCst))
37 }
38 async fn next_target_seq(&self) -> Result<u64, StoreError> {
39 Ok(self.target_seq.load(Ordering::SeqCst))
40 }
41 async fn set_next_sender_seq(&self, seq: u64) -> Result<(), StoreError> {
42 self.sender_seq.store(seq, Ordering::SeqCst);
43 Ok(())
44 }
45 async fn set_next_target_seq(&self, seq: u64) -> Result<(), StoreError> {
46 self.target_seq.store(seq, Ordering::SeqCst);
47 Ok(())
48 }
49 async fn save(&self, _seq: u64, _message: &[u8]) -> Result<(), StoreError> {
50 Ok(())
51 }
52 async fn get(&self, _begin: u64, _end: u64) -> Result<Vec<(u64, Vec<u8>)>, StoreError> {
53 Ok(Vec::new())
54 }
55 async fn reset(&self) -> Result<(), StoreError> {
56 self.sender_seq.store(1, Ordering::SeqCst);
57 self.target_seq.store(1, Ordering::SeqCst);
58 Ok(())
59 }
60}