Trait AsyncProtocol
pub trait AsyncProtocol {
// Provided methods
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 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_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_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_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_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_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_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_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 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 { ... }
}Expand description
Trait implementing a y-sync protocol using awaitable transaction API. 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<'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.
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.