Struct DefaultProtocol
pub struct DefaultProtocol;Expand description
A default implementation of y-sync Protocol.
Trait Implementations§
§impl AsyncProtocol for DefaultProtocol
impl AsyncProtocol for DefaultProtocol
§fn start<'life0, 'life1, 'async_trait, E>(
&'life0 self,
awareness: &'life1 Awareness,
) -> Pin<Box<dyn Future<Output = Result<SmallVec<[Message; 1]>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
E: Encoder + 'async_trait,
Self: 'async_trait,
fn start<'life0, 'life1, 'async_trait, E>(
&'life0 self,
awareness: &'life1 Awareness,
) -> Pin<Box<dyn Future<Output = Result<SmallVec<[Message; 1]>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
E: Encoder + 'async_trait,
Self: 'async_trait,
To be called whenever a new connection has been accepted. Returns a list of
messages to be sent back to initiator.
§fn handle<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
data: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<SmallVec<[Message; 1]>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn handle<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
data: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<SmallVec<[Message; 1]>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Y-sync protocol message handler.
§fn handle_message<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
message: Message,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn handle_message<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
message: Message,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Handles incoming y-sync Message within the context of current awareness structure.
Returns an optional reply message that should be sent back to message sender.
§fn handle_sync_step1<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
sv: StateVector,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn handle_sync_step1<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
sv: StateVector,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Y-sync protocol sync-step-1 - given a StateVector of a remote side, calculate missing
updates. Returns a sync-step-2 message containing a calculated update.
§fn handle_sync_step2<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
update: Update,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn handle_sync_step2<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
update: Update,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Handle reply for a sync-step-1 send from this replica previously. By default just apply
an update to current
awareness document instance.§fn handle_update<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
update: Update,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn handle_update<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
update: Update,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Handle continuous update send from the client. By default just apply an update to a current
awareness document instance.§fn handle_auth<'life0, 'life1, 'async_trait>(
&'life0 self,
_awareness: &'life1 Awareness,
deny_reason: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn handle_auth<'life0, 'life1, 'async_trait>(
&'life0 self,
_awareness: &'life1 Awareness,
deny_reason: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Handle authorization message. By default if reason for auth denial has been provided,
send back Error::PermissionDenied.
§fn handle_awareness_query<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn handle_awareness_query<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Returns an AwarenessUpdate which is a serializable representation of a current
awareness
instance.§fn handle_awareness_update<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
update: AwarenessUpdate,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn handle_awareness_update<'life0, 'life1, 'async_trait>(
&'life0 self,
awareness: &'life1 Awareness,
update: AwarenessUpdate,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Reply to awareness query or just incoming AwarenessUpdate, where current
awareness
instance is being updated with incoming data.§fn missing_handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_awareness: &'life1 Awareness,
tag: u8,
_data: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn missing_handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_awareness: &'life1 Awareness,
tag: u8,
_data: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<Option<Message>, Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Y-sync protocol enables to extend its own settings with custom handles. These can be
implemented here. By default it returns an Error::Unsupported.
§impl Clone for DefaultProtocol
impl Clone for DefaultProtocol
§fn clone(&self) -> DefaultProtocol
fn clone(&self) -> DefaultProtocol
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read more§impl Debug for DefaultProtocol
impl Debug for DefaultProtocol
§impl Default for DefaultProtocol
impl Default for DefaultProtocol
§fn default() -> DefaultProtocol
fn default() -> DefaultProtocol
Returns the “default value” for a type. Read more
§impl Protocol for DefaultProtocol
impl Protocol for DefaultProtocol
§fn start<E>(&self, awareness: &Awareness, encoder: &mut E) -> Result<(), Error>where
E: Encoder,
fn start<E>(&self, awareness: &Awareness, encoder: &mut E) -> Result<(), Error>where
E: Encoder,
To be called whenever a new connection has been accepted. Returns an encoded list of
messages to be sent back to initiator. This binary may contain multiple messages inside,
stored one after another.
§fn handle(
&self,
awareness: &Awareness,
data: &[u8],
) -> Result<SmallVec<[Message; 1]>, Error>
fn handle( &self, awareness: &Awareness, data: &[u8], ) -> Result<SmallVec<[Message; 1]>, Error>
Y-sync protocol message handler.
§fn handle_message(
&self,
awareness: &Awareness,
message: Message,
) -> Result<Option<Message>, Error>
fn handle_message( &self, awareness: &Awareness, message: Message, ) -> Result<Option<Message>, Error>
Handles incoming y-sync Message within the context of current awareness structure.
Returns an optional reply message that should be sent back to message sender.
§fn handle_sync_step1(
&self,
awareness: &Awareness,
sv: StateVector,
) -> Result<Option<Message>, Error>
fn handle_sync_step1( &self, awareness: &Awareness, sv: StateVector, ) -> Result<Option<Message>, Error>
Y-sync protocol sync-step-1 - given a StateVector of a remote side, calculate missing
updates. Returns a sync-step-2 message containing a calculated update.
§fn handle_sync_step2(
&self,
awareness: &Awareness,
update: Update,
) -> Result<Option<Message>, Error>
fn handle_sync_step2( &self, awareness: &Awareness, update: Update, ) -> Result<Option<Message>, Error>
Handle reply for a sync-step-1 send from this replica previously. By default just apply
an update to current
awareness document instance.§fn handle_update(
&self,
awareness: &Awareness,
update: Update,
) -> Result<Option<Message>, Error>
fn handle_update( &self, awareness: &Awareness, update: Update, ) -> Result<Option<Message>, Error>
Handle continuous update send from the client. By default just apply an update to a current
awareness document instance.§fn handle_auth(
&self,
_awareness: &Awareness,
deny_reason: Option<String>,
) -> Result<Option<Message>, Error>
fn handle_auth( &self, _awareness: &Awareness, deny_reason: Option<String>, ) -> Result<Option<Message>, Error>
Handle authorization message. By default if reason for auth denial has been provided,
send back Error::PermissionDenied.
§fn handle_awareness_query(
&self,
awareness: &Awareness,
) -> Result<Option<Message>, Error>
fn handle_awareness_query( &self, awareness: &Awareness, ) -> Result<Option<Message>, Error>
Returns an AwarenessUpdate which is a serializable representation of a current
awareness
instance.§fn handle_awareness_update(
&self,
awareness: &Awareness,
update: AwarenessUpdate,
) -> Result<Option<Message>, Error>
fn handle_awareness_update( &self, awareness: &Awareness, update: AwarenessUpdate, ) -> Result<Option<Message>, Error>
Reply to awareness query or just incoming AwarenessUpdate, where current
awareness
instance is being updated with incoming data.impl Copy for DefaultProtocol
Auto Trait Implementations§
impl Freeze for DefaultProtocol
impl RefUnwindSafe for DefaultProtocol
impl Send for DefaultProtocol
impl Sync for DefaultProtocol
impl Unpin for DefaultProtocol
impl UnwindSafe for DefaultProtocol
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more