BridgedEngineWrapper

Struct BridgedEngineWrapper 

Source
pub struct BridgedEngineWrapper { /* private fields */ }
Expand description

Wraps a Box<dyn BridgedEngine> and centralizes the work every consuming crate’s UniFFI-facing bridged engine needs to do: the JSON String <-> BSO marshalling that crosses the FFI boundary, and 1:1 delegation to the wrapped engine. Rather than each crate hand-writing this (it was ~100 identical lines per crate), they expose a thin newtype around this via the [uniffi_bridged_engine!] macro.

All methods return anyhow::Result, which each crate maps onto its own UniFFI error type via an impl From<anyhow::Error>.

Note on the longer-term direction: this type, along with BridgedEngine, BridgedEngineAdaptor and ApplyResults, only exists because we still have two sync-engine traits. Once Desktop moves off explicit timestamp handling to the get_collection_request model (see #2841) we can remove BridgedEngine entirely, have Desktop consume SyncEngine directly, and this wrapper collapses into a thin SyncEngine -> FFI shim (or goes away). See the note in engine/mod.rs for the migration sequencing.

Implementations§

Source§

impl BridgedEngineWrapper

Source

pub fn new(inner: Box<dyn BridgedEngine>) -> Self

Source

pub fn last_sync(&self) -> Result<i64>

Source

pub fn set_last_sync(&self, last_sync: i64) -> Result<()>

Source

pub fn sync_id(&self) -> Result<Option<String>>

Source

pub fn reset_sync_id(&self) -> Result<String>

Source

pub fn ensure_current_sync_id(&self, sync_id: &str) -> Result<String>

Source

pub fn prepare_for_sync(&self, client_data: &str) -> Result<()>

Source

pub fn sync_started(&self) -> Result<()>

Source

pub fn store_incoming(&self, incoming: Vec<String>) -> Result<()>

Decode the JSON-encoded IncomingBsos that UniFFI passes to us, then hand them to the wrapped engine.

Source

pub fn apply(&self) -> Result<Vec<String>>

Apply staged records and encode the outgoing OutgoingBsos back into JSON for UniFFI.

Source

pub fn set_uploaded<G: Into<Guid>>( &self, server_modified_millis: i64, ids: Vec<G>, ) -> Result<()>

Accepts anything that turns into a Guid, which reconciles the per-crate id representation: logins hands us Vec<String>, while tabs and webext-storage hand us Vec<sync_guid::Guid>. Both String and Guid implement Into<Guid>.

Source

pub fn sync_finished(&self) -> Result<()>

Source

pub fn reset(&self) -> Result<()>

Source

pub fn wipe(&self) -> Result<()>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

unsafe fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

unsafe fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<> Read more
§

unsafe fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,