chore(sdk): Move From impl on SSListRequestGenerator as proper constructor.

This commit is contained in:
Ivan Enderlin
2023-05-17 16:37:11 +02:00
parent ddc8d915cb
commit 1c175df6b3
2 changed files with 35 additions and 35 deletions

View File

@@ -16,7 +16,7 @@ use tokio::sync::mpsc::Sender;
use super::{
super::SlidingSyncInternalMessage, Bound, SlidingSyncList, SlidingSyncListCachePolicy,
SlidingSyncListInner, SlidingSyncMode, SlidingSyncState,
SlidingSyncListInner, SlidingSyncListRequestGenerator, SlidingSyncMode, SlidingSyncState,
};
use crate::{
sliding_sync::{cache::restore_sliding_sync_list, FrozenSlidingSyncRoom},
@@ -212,7 +212,9 @@ impl SlidingSyncListBuilder {
cache_policy: self.cache_policy,
// Computed from the builder.
request_generator: StdRwLock::new(self.sync_mode.into()),
request_generator: StdRwLock::new(SlidingSyncListRequestGenerator::new(
self.sync_mode,
)),
// Values read from deserialization, or that are still equal to the default values
// otherwise.

View File

@@ -77,6 +77,34 @@ pub(in super::super) struct SlidingSyncListRequestGenerator {
}
impl SlidingSyncListRequestGenerator {
pub(super) fn new(sync_mode: SlidingSyncMode) -> Self {
match sync_mode {
SlidingSyncMode::Paging { batch_size, maximum_number_of_rooms_to_fetch } => Self {
ranges: Vec::new(),
kind: SlidingSyncListRequestGeneratorKind::Paging {
batch_size,
maximum_number_of_rooms_to_fetch,
number_of_fetched_rooms: 0,
fully_loaded: false,
},
},
SlidingSyncMode::Growing { batch_size, maximum_number_of_rooms_to_fetch } => Self {
ranges: Vec::new(),
kind: SlidingSyncListRequestGeneratorKind::Growing {
batch_size,
maximum_number_of_rooms_to_fetch,
number_of_fetched_rooms: 0,
fully_loaded: false,
},
},
SlidingSyncMode::Selective => {
Self { ranges: Vec::new(), kind: SlidingSyncListRequestGeneratorKind::Selective }
}
}
}
pub(super) fn reset(&mut self) {
// Reset the ranges.
self.ranges.clear();
@@ -111,36 +139,6 @@ impl SlidingSyncListRequestGenerator {
}
}
impl From<SlidingSyncMode> for SlidingSyncListRequestGenerator {
fn from(sync_mode: SlidingSyncMode) -> Self {
match sync_mode {
SlidingSyncMode::Paging { batch_size, maximum_number_of_rooms_to_fetch } => Self {
ranges: Vec::new(),
kind: SlidingSyncListRequestGeneratorKind::Paging {
batch_size,
maximum_number_of_rooms_to_fetch,
number_of_fetched_rooms: 0,
fully_loaded: false,
},
},
SlidingSyncMode::Growing { batch_size, maximum_number_of_rooms_to_fetch } => Self {
ranges: Vec::new(),
kind: SlidingSyncListRequestGeneratorKind::Growing {
batch_size,
maximum_number_of_rooms_to_fetch,
number_of_fetched_rooms: 0,
fully_loaded: false,
},
},
SlidingSyncMode::Selective => {
Self { ranges: Vec::new(), kind: SlidingSyncListRequestGeneratorKind::Selective }
}
}
}
}
pub(super) fn create_range(
start: u32,
desired_size: u32,
@@ -234,7 +232,7 @@ mod tests {
#[test]
fn test_request_generator_selective_from_sync_mode() {
let sync_mode = SlidingSyncMode::new_selective();
let request_generator = SlidingSyncListRequestGenerator::from(sync_mode);
let request_generator = SlidingSyncListRequestGenerator::new(sync_mode);
assert!(request_generator.ranges.is_empty());
assert_eq!(request_generator.kind, SlidingSyncListRequestGeneratorKind::Selective);
@@ -243,7 +241,7 @@ mod tests {
#[test]
fn test_request_generator_paging_from_sync_mode() {
let sync_mode = SlidingSyncMode::new_paging(1, Some(2));
let request_generator = SlidingSyncListRequestGenerator::from(sync_mode);
let request_generator = SlidingSyncListRequestGenerator::new(sync_mode);
assert!(request_generator.ranges.is_empty());
assert_eq!(
@@ -260,7 +258,7 @@ mod tests {
#[test]
fn test_request_generator_growing_from_sync_mode() {
let sync_mode = SlidingSyncMode::new_growing(1, Some(2));
let request_generator = SlidingSyncListRequestGenerator::from(sync_mode);
let request_generator = SlidingSyncListRequestGenerator::new(sync_mode);
assert!(request_generator.ranges.is_empty());
assert_eq!(