Add wrapper types for short IDs

This commit is contained in:
Lambda 2024-08-27 14:27:12 +00:00
parent f1642c92d1
commit b0f33207fe
28 changed files with 427 additions and 232 deletions

View file

@ -8,6 +8,7 @@ pub(crate) use data::Data;
use ruma::{api::client::error::ErrorKind, EventId, RoomId};
use tracing::{debug, error, warn};
use super::short::ShortEventId;
use crate::{services, utils::debug_slice_truncated, Error, Result};
pub(crate) struct Service {
@ -17,16 +18,16 @@ pub(crate) struct Service {
impl Service {
pub(crate) fn get_cached_eventid_authchain(
&self,
key: &[u64],
) -> Result<Option<Arc<HashSet<u64>>>> {
key: &[ShortEventId],
) -> Result<Option<Arc<HashSet<ShortEventId>>>> {
self.db.get_cached_eventid_authchain(key)
}
#[tracing::instrument(skip(self))]
pub(crate) fn cache_auth_chain(
&self,
key: Vec<u64>,
auth_chain: Arc<HashSet<u64>>,
key: Vec<ShortEventId>,
auth_chain: Arc<HashSet<ShortEventId>>,
) -> Result<()> {
self.db.cache_auth_chain(key, auth_chain)
}
@ -51,7 +52,7 @@ impl Service {
// I'm afraid to change this in case there is accidental reliance on
// the truncation
#[allow(clippy::as_conversions, clippy::cast_possible_truncation)]
let bucket_id = (short % NUM_BUCKETS as u64) as usize;
let bucket_id = (short.get() % NUM_BUCKETS as u64) as usize;
buckets[bucket_id].insert((short, id.clone()));
i += 1;
if i % 100 == 0 {
@ -68,7 +69,7 @@ impl Service {
continue;
}
let chunk_key: Vec<u64> =
let chunk_key: Vec<_> =
chunk.iter().map(|(short, _)| short).copied().collect();
if let Some(cached) =
self.get_cached_eventid_authchain(&chunk_key)?
@ -139,7 +140,7 @@ impl Service {
&self,
room_id: &RoomId,
event_id: &EventId,
) -> Result<HashSet<u64>> {
) -> Result<HashSet<ShortEventId>> {
let mut todo = vec![Arc::from(event_id)];
let mut found = HashSet::new();