[][src]Trait sync15_traits::bridged_engine::BridgedEngine

pub trait BridgedEngine {
    type Error;
    fn last_sync(&self) -> Result<i64, Self::Error>;
fn set_last_sync(&self, last_sync_millis: i64) -> Result<(), Self::Error>;
fn sync_id(&self) -> Result<Option<String>, Self::Error>;
fn reset_sync_id(&self) -> Result<String, Self::Error>;
fn ensure_current_sync_id(
        &self,
        new_sync_id: &str
    ) -> Result<String, Self::Error>;
fn sync_started(&self) -> Result<(), Self::Error>;
fn store_incoming(
        &self,
        incoming_cleartexts: &[IncomingEnvelope]
    ) -> Result<(), Self::Error>;
fn apply(&self) -> Result<ApplyResults, Self::Error>;
fn set_uploaded(
        &self,
        server_modified_millis: i64,
        ids: &[Guid]
    ) -> Result<(), Self::Error>;
fn sync_finished(&self) -> Result<(), Self::Error>;
fn reset(&self) -> Result<(), Self::Error>;
fn wipe(&self) -> Result<(), Self::Error>; }

A bridged Sync engine implements all the methods needed to support Desktop Sync.

Associated Types

type Error

The type returned for errors.

Loading content...

Required methods

fn last_sync(&self) -> Result<i64, Self::Error>

Returns the last sync time, in milliseconds, for this engine's collection. This is called before each sync, to determine the lower bound for new records to fetch from the server.

fn set_last_sync(&self, last_sync_millis: i64) -> Result<(), Self::Error>

Sets the last sync time, in milliseconds. This is called throughout the sync, to fast-forward the stored last sync time to match the timestamp on the uploaded records.

fn sync_id(&self) -> Result<Option<String>, Self::Error>

Returns the sync ID for this engine's collection. This is only used in tests.

fn reset_sync_id(&self) -> Result<String, Self::Error>

Resets the sync ID for this engine's collection, returning the new ID. As a side effect, implementations should reset all local Sync state, as in reset.

fn ensure_current_sync_id(
    &self,
    new_sync_id: &str
) -> Result<String, Self::Error>

Ensures that the locally stored sync ID for this engine's collection matches the new_sync_id from the server. If the two don't match, implementations should reset all local Sync state, as in reset. This method returns the assigned sync ID, which can be either the new_sync_id, or a different one if the engine wants to force other devices to reset their Sync state for this collection the next time they sync.

fn sync_started(&self) -> Result<(), Self::Error>

Indicates that the engine is about to start syncing. This is called once per sync, and always before store_incoming.

fn store_incoming(
    &self,
    incoming_cleartexts: &[IncomingEnvelope]
) -> Result<(), Self::Error>

Stages a batch of incoming Sync records. This is called multiple times per sync, once for each batch. Implementations can use the signal to check if the operation was aborted, and cancel any pending work.

fn apply(&self) -> Result<ApplyResults, Self::Error>

Applies all staged records, reconciling changes on both sides and resolving conflicts. Returns a list of records to upload.

fn set_uploaded(
    &self,
    server_modified_millis: i64,
    ids: &[Guid]
) -> Result<(), Self::Error>

Indicates that the given record IDs were uploaded successfully to the server. This is called multiple times per sync, once for each batch upload.

fn sync_finished(&self) -> Result<(), Self::Error>

Indicates that all records have been uploaded. At this point, any record IDs marked for upload that haven't been passed to set_uploaded, can be assumed to have failed: for example, because the server rejected a record with an invalid TTL or sort index.

fn reset(&self) -> Result<(), Self::Error>

Resets all local Sync state, including any change flags, mirrors, and the last sync time, such that the next sync is treated as a first sync with all new local data. Does not erase any local user data.

fn wipe(&self) -> Result<(), Self::Error>

Erases all local user data for this collection, and any Sync metadata. This method is destructive, and unused for most collections.

Loading content...

Implementors

Loading content...