Trait Protocol
pub trait Protocol {
// Provided methods
fn start<E>(
&self,
awareness: &Awareness,
encoder: &mut E,
) -> Result<(), Error>
where E: Encoder { ... }
fn handle(
&self,
awareness: &Awareness,
data: &[u8],
) -> Result<SmallVec<[Message; 1]>, Error> { ... }
fn handle_message(
&self,
awareness: &Awareness,
message: Message,
) -> Result<Option<Message>, Error> { ... }
fn handle_sync_step1(
&self,
awareness: &Awareness,
sv: StateVector,
) -> Result<Option<Message>, Error> { ... }
fn handle_sync_step2(
&self,
awareness: &Awareness,
update: Update,
) -> Result<Option<Message>, Error> { ... }
fn handle_update(
&self,
awareness: &Awareness,
update: Update,
) -> Result<Option<Message>, Error> { ... }
fn handle_auth(
&self,
_awareness: &Awareness,
deny_reason: Option<String>,
) -> Result<Option<Message>, Error> { ... }
fn handle_awareness_query(
&self,
awareness: &Awareness,
) -> Result<Option<Message>, Error> { ... }
fn handle_awareness_update(
&self,
awareness: &Awareness,
update: AwarenessUpdate,
) -> Result<Option<Message>, Error> { ... }
fn missing_handle(
&self,
_awareness: &Awareness,
tag: u8,
_data: Vec<u8>,
) -> Result<Option<Message>, Error> { ... }
}Expand description
Trait implementing a y-sync protocol. The default implementation can be found in DefaultProtocol, but its implementation steps can be potentially changed by the user if necessary.
Provided Methods§
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.
fn missing_handle(
&self,
_awareness: &Awareness,
tag: u8,
_data: Vec<u8>,
) -> Result<Option<Message>, Error>
fn missing_handle( &self, _awareness: &Awareness, tag: u8, _data: Vec<u8>, ) -> Result<Option<Message>, Error>
Y-sync protocol enables to extend its own settings with custom handles. These can be implemented here. By default, it returns an Error::Unsupported.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.