Skip to content

Commit

Permalink
feat(base): Add EventCacheStore::handle_linked_chunk_updates.
Browse files Browse the repository at this point in the history
This patch adds the `handle_linked_chunk_updates` method on the
`EventCacheStore` trait. Part of
matrix-org#3280.
  • Loading branch information
Hywan committed Nov 20, 2024
1 parent 8a6ced0 commit 67ff82e
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 6 deletions.
15 changes: 13 additions & 2 deletions crates/matrix-sdk-base/src/event_cache/store/memory_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,16 @@ use std::{collections::HashMap, num::NonZeroUsize, sync::RwLock as StdRwLock, ti

use async_trait::async_trait;
use matrix_sdk_common::{
ring_buffer::RingBuffer, store_locks::memory_store_helper::try_take_leased_lock,
linked_chunk::Update, ring_buffer::RingBuffer,
store_locks::memory_store_helper::try_take_leased_lock,
};
use ruma::{MxcUri, OwnedMxcUri};

use super::{EventCacheStore, EventCacheStoreError, Result};
use crate::media::{MediaRequestParameters, UniqueKey as _};
use crate::{
event_cache::{Event, Gap},
media::{MediaRequestParameters, UniqueKey as _},
};

/// In-memory, non-persistent implementation of the `EventCacheStore`.
///
Expand Down Expand Up @@ -66,6 +70,13 @@ impl EventCacheStore for MemoryStore {
Ok(try_take_leased_lock(&self.leases, lease_duration_ms, key, holder))
}

async fn handle_linked_chunk_updates(
&self,
updates: &[Update<Event, Gap>],
) -> Result<(), Self::Error> {
todo!()
}

async fn add_media_content(
&self,
request: &MediaRequestParameters,
Expand Down
19 changes: 17 additions & 2 deletions crates/matrix-sdk-base/src/event_cache/store/traits.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,14 @@
use std::{fmt, sync::Arc};

use async_trait::async_trait;
use matrix_sdk_common::AsyncTraitDeps;
use matrix_sdk_common::{linked_chunk::Update, AsyncTraitDeps};
use ruma::MxcUri;

use super::EventCacheStoreError;
use crate::media::MediaRequestParameters;
use crate::{
event_cache::{Event, Gap},
media::MediaRequestParameters,
};

/// An abstract trait that can be used to implement different store backends
/// for the event cache of the SDK.
Expand All @@ -37,6 +40,11 @@ pub trait EventCacheStore: AsyncTraitDeps {
holder: &str,
) -> Result<bool, Self::Error>;

async fn handle_linked_chunk_updates(
&self,
updates: &[Update<Event, Gap>],
) -> Result<(), Self::Error>;

/// Add a media file's content in the media store.
///
/// # Arguments
Expand Down Expand Up @@ -131,6 +139,13 @@ impl<T: EventCacheStore> EventCacheStore for EraseEventCacheStoreError<T> {
self.0.try_take_leased_lock(lease_duration_ms, key, holder).await.map_err(Into::into)
}

async fn handle_linked_chunk_updates(
&self,
updates: &[Update<Event, Gap>],
) -> Result<(), Self::Error> {
self.0.handle_linked_chunk_updates(updates).await.map_err(Into::into)
}

async fn add_media_content(
&self,
request: &MediaRequestParameters,
Expand Down
4 changes: 2 additions & 2 deletions crates/matrix-sdk-common/src/linked_chunk/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ use std::{
sync::atomic::{AtomicU64, Ordering},
};

use as_vector::*;
use updates::*;
pub use as_vector::*;
pub use updates::*;

/// Errors of [`LinkedChunk`].
#[derive(thiserror::Error, Debug)]
Expand Down
7 changes: 7 additions & 0 deletions crates/matrix-sdk-sqlite/src/event_cache_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,13 @@ impl EventCacheStore for SqliteEventCacheStore {
Ok(num_touched == 1)
}

async fn handle_linked_chunk_updates(
&self,
updates: &[Update<Event, Gap>],
) -> Result<(), Self::Error> {
todo!()
}

async fn add_media_content(
&self,
request: &MediaRequestParameters,
Expand Down

0 comments on commit 67ff82e

Please sign in to comment.