@@ -16,7 +16,8 @@ use std::{collections::HashMap, num::NonZeroUsize, sync::RwLock as StdRwLock, ti
16
16
17
17
use async_trait:: async_trait;
18
18
use matrix_sdk_common:: {
19
- linked_chunk:: Update , ring_buffer:: RingBuffer ,
19
+ linked_chunk:: { relational:: RelationalLinkedChunk , Update } ,
20
+ ring_buffer:: RingBuffer ,
20
21
store_locks:: memory_store_helper:: try_take_leased_lock,
21
22
} ;
22
23
use ruma:: { MxcUri , OwnedMxcUri } ;
@@ -35,6 +36,7 @@ use crate::{
35
36
pub struct MemoryStore {
36
37
media : StdRwLock < RingBuffer < ( OwnedMxcUri , String /* unique key */ , Vec < u8 > ) > > ,
37
38
leases : StdRwLock < HashMap < String , ( String , Instant ) > > ,
39
+ events : StdRwLock < RelationalLinkedChunk < Event , Gap > > ,
38
40
}
39
41
40
42
// SAFETY: `new_unchecked` is safe because 20 is not zero.
@@ -45,6 +47,7 @@ impl Default for MemoryStore {
45
47
Self {
46
48
media : StdRwLock :: new ( RingBuffer :: new ( NUMBER_OF_MEDIAS ) ) ,
47
49
leases : Default :: default ( ) ,
50
+ events : StdRwLock :: new ( RelationalLinkedChunk :: new ( ) ) ,
48
51
}
49
52
}
50
53
}
@@ -72,9 +75,11 @@ impl EventCacheStore for MemoryStore {
72
75
73
76
async fn handle_linked_chunk_updates (
74
77
& self ,
75
- _updates : & [ Update < Event , Gap > ] ,
78
+ updates : & [ Update < Event , Gap > ] ,
76
79
) -> Result < ( ) , Self :: Error > {
77
- todo ! ( )
80
+ self . events . write ( ) . unwrap ( ) . apply_updates ( updates) ;
81
+
82
+ Ok ( )
78
83
}
79
84
80
85
async fn add_media_content (
0 commit comments