pub struct SyncManager { /* private fields */ }Expand description
Manages synchronization of a Dolt repository across peers.
§Fields
mailbox– TheMailboxinstance used to send and receive messages.repo_path– Filesystem path to the local Dolt repository.
§Rationale
The CHORUS architecture relies on deterministic state replication. By
broadcasting the latest commit hash (sync_signal) each peer can decide
whether to pull updates. This struct encapsulates that behaviour, keeping the
rest of the system agnostic of the underlying VCS commands.
Implementations§
Source§impl SyncManager
impl SyncManager
Sourcepub fn new(mailbox: Mailbox, repo_path: PathBuf) -> Self
pub fn new(mailbox: Mailbox, repo_path: PathBuf) -> Self
Creates a new SyncManager.
§Parameters
mailbox– An already‑openedMailboxfor peer communication.repo_path– Path to the Dolt repository that should be kept in sync.
Returns a fully‑initialised manager ready to broadcast or handle sync signals.
Sourcepub fn broadcast_state(
&self,
from_peer: &str,
to_peer: &str,
) -> Result<(), Box<dyn Error>>
pub fn broadcast_state( &self, from_peer: &str, to_peer: &str, ) -> Result<(), Box<dyn Error>>
Broadcasts the current repository state to a remote peer.
The method executes dolt log -n 1 --format %H to obtain the most recent
commit hash, constructs a Message with topic "sync_signal" and sends it
via the mailbox.
from_peer– Identifier of the sender.to_peer– Identifier of the intended recipient.
§Errors
Returns any I/O or command‑execution error wrapped in a boxed dyn Error.
Sourcepub fn handle_sync_signal(&self, msg: &Message) -> Result<(), Box<dyn Error>>
pub fn handle_sync_signal(&self, msg: &Message) -> Result<(), Box<dyn Error>>
Handles an incoming sync_signal message.
If the message topic is not "sync_signal" the function returns Ok(())
immediately. Otherwise it extracts the remote commit hash and attempts a
dolt pull origin to bring the local repository up‑to‑date. In a real
P2P deployment the remote URL would be derived from the sender, but the
current implementation uses the default remote configuration.
§Errors
Propagates any command execution failures.