Skip to main content

reifydb_core/actors/
replication.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2025 ReifyDB
3
4use reifydb_runtime::actor::{reply::Reply, system::ActorHandle};
5use reifydb_type::error::Error;
6
7use crate::{
8	common::CommitVersion,
9	interface::cdc::{CdcBatch, SystemChange},
10};
11
12pub type ReplicationPrimaryHandle = ActorHandle<ReplicationPrimaryMessage>;
13
14pub enum ReplicationPrimaryMessage {
15	ReadCdcBatch {
16		since_version: CommitVersion,
17		batch_size: u64,
18		reply: Reply<Result<CdcBatch, Error>>,
19	},
20
21	GetVersion {
22		reply: Reply<Result<VersionInfo, Error>>,
23	},
24}
25
26pub struct VersionInfo {
27	pub current: Option<CommitVersion>,
28	pub min_cdc: Option<CommitVersion>,
29	pub max_cdc: Option<CommitVersion>,
30}
31
32pub type ReplicationReplicaHandle = ActorHandle<ReplicationReplicaMessage>;
33
34pub enum ReplicationReplicaMessage {
35	ApplyEntry {
36		version: CommitVersion,
37		system_changes: Vec<SystemChange>,
38		reply: Reply<Result<(), Error>>,
39	},
40
41	GetCurrentVersion {
42		reply: Reply<CommitVersion>,
43	},
44}