refactor: rename "OpGroup" to "ContainerHistoryCache"

This commit is contained in:
Zixuan Chen 2024-07-17 12:32:03 +08:00
parent 59f09e7162
commit 06cd6b577d
No known key found for this signature in database
3 changed files with 11 additions and 6 deletions

View file

@ -19,13 +19,18 @@ use crate::{
VersionVector, VersionVector,
}; };
/// A cache for the history of a container.
///
/// There are cases where a container needs a view of the history of the container.
/// For example, when switching to an older version, a map container may need to know the value of a key at a certain version.
/// This cache provides a faster way to do that than scanning the oplog.
#[derive(Debug)] #[derive(Debug)]
pub(crate) struct OpGroups { pub(crate) struct ContainerHistoryCache {
arena: SharedArena, arena: SharedArena,
groups: FxHashMap<ContainerIdx, OpGroup>, groups: FxHashMap<ContainerIdx, OpGroup>,
} }
impl OpGroups { impl ContainerHistoryCache {
pub(crate) fn fork(&self, arena: SharedArena) -> Self { pub(crate) fn fork(&self, arena: SharedArena) -> Self {
let mut groups = FxHashMap::with_capacity_and_hasher(self.groups.len(), Default::default()); let mut groups = FxHashMap::with_capacity_and_hasher(self.groups.len(), Default::default());
for (container_idx, group) in self.groups.iter() { for (container_idx, group) in self.groups.iter() {

View file

@ -54,7 +54,7 @@ pub mod event;
pub use error::{LoroError, LoroResult}; pub use error::{LoroError, LoroResult};
pub mod estimated_size; pub mod estimated_size;
pub(crate) mod group; pub(crate) mod history_cache;
pub(crate) mod macros; pub(crate) mod macros;
pub(crate) mod state; pub(crate) mod state;
pub mod undo; pub mod undo;

View file

@ -16,7 +16,7 @@ use crate::container::list::list_op;
use crate::dag::{Dag, DagUtils}; use crate::dag::{Dag, DagUtils};
use crate::encoding::ParsedHeaderAndBody; use crate::encoding::ParsedHeaderAndBody;
use crate::encoding::{decode_oplog, encode_oplog, EncodeMode}; use crate::encoding::{decode_oplog, encode_oplog, EncodeMode};
use crate::group::OpGroups; use crate::history_cache::ContainerHistoryCache;
use crate::id::{Counter, PeerID, ID}; use crate::id::{Counter, PeerID, ID};
use crate::op::{FutureInnerContent, ListSlice, RawOpContent, RemoteOp, RichOp}; use crate::op::{FutureInnerContent, ListSlice, RawOpContent, RemoteOp, RichOp};
use crate::span::{HasCounterSpan, HasIdSpan, HasLamportSpan}; use crate::span::{HasCounterSpan, HasIdSpan, HasLamportSpan};
@ -45,7 +45,7 @@ pub struct OpLog {
pub(crate) dag: AppDag, pub(crate) dag: AppDag,
pub(crate) arena: SharedArena, pub(crate) arena: SharedArena,
change_store: ChangeStore, change_store: ChangeStore,
pub(crate) op_groups: OpGroups, pub(crate) op_groups: ContainerHistoryCache,
/// **lamport starts from 0** /// **lamport starts from 0**
pub(crate) next_lamport: Lamport, pub(crate) next_lamport: Lamport,
pub(crate) latest_timestamp: Timestamp, pub(crate) latest_timestamp: Timestamp,
@ -187,7 +187,7 @@ impl OpLog {
Self { Self {
change_store: ChangeStore::new_mem(&arena, cfg.merge_interval.clone()), change_store: ChangeStore::new_mem(&arena, cfg.merge_interval.clone()),
dag: AppDag::default(), dag: AppDag::default(),
op_groups: OpGroups::new(arena.clone()), op_groups: ContainerHistoryCache::new(arena.clone()),
arena, arena,
next_lamport: 0, next_lamport: 0,
latest_timestamp: Timestamp::default(), latest_timestamp: Timestamp::default(),