pub trait Protocol {
// Provided methods
fn start<E: Encoder>(
&self,
awareness: &Awareness,
encoder: &mut E,
) -> Result<(), Error> { ... }
fn handle_sync_step1(
&self,
awareness: &Awareness,
sv: StateVector,
) -> Result<Option<Message>, Error> { ... }
fn handle_sync_step2(
&self,
awareness: &mut Awareness,
update: Update,
) -> Result<Option<Message>, Error> { ... }
fn handle_update(
&self,
awareness: &mut 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: &mut Awareness,
update: AwarenessUpdate,
) -> Result<Option<Message>, Error> { ... }
fn missing_handle(
&self,
_awareness: &mut 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§
Sourcefn start<E: Encoder>(
&self,
awareness: &Awareness,
encoder: &mut E,
) -> Result<(), Error>
fn start<E: Encoder>( &self, awareness: &Awareness, encoder: &mut E, ) -> Result<(), Error>
To be called whenever a new connection has been accepted. Returns an encoded list of messages to be send back to initiator. This binary may contain multiple messages inside, stored one after another.
Sourcefn 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.
Sourcefn handle_sync_step2(
&self,
awareness: &mut Awareness,
update: Update,
) -> Result<Option<Message>, Error>
fn handle_sync_step2( &self, awareness: &mut 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.
Sourcefn handle_update(
&self,
awareness: &mut Awareness,
update: Update,
) -> Result<Option<Message>, Error>
fn handle_update( &self, awareness: &mut 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.
Sourcefn 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.
Sourcefn 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.
Sourcefn handle_awareness_update(
&self,
awareness: &mut Awareness,
update: AwarenessUpdate,
) -> Result<Option<Message>, Error>
fn handle_awareness_update( &self, awareness: &mut 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.
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.