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.