Trait kitsune_p2p::actor::KitsuneP2pHandler

source ·
pub trait KitsuneP2pHandler: GhostHandler<KitsuneP2p> {
    // Required methods
    fn handle_list_transport_bindings(
        &mut self
    ) -> KitsuneP2pHandlerResult<Vec<Url2>>;
    fn handle_join(
        &mut self,
        space: Arc<KitsuneSpace>,
        agent: Arc<KitsuneAgent>,
        maybe_agent_info: Option<AgentInfoSigned>,
        initial_arc: Option<DhtArc>
    ) -> KitsuneP2pHandlerResult<()>;
    fn handle_leave(
        &mut self,
        space: Arc<KitsuneSpace>,
        agent: Arc<KitsuneAgent>
    ) -> KitsuneP2pHandlerResult<()>;
    fn handle_rpc_single(
        &mut self,
        space: Arc<KitsuneSpace>,
        to_agent: Arc<KitsuneAgent>,
        payload: Vec<u8>,
        timeout_ms: Option<u64>
    ) -> KitsuneP2pHandlerResult<Vec<u8>>;
    fn handle_rpc_multi(
        &mut self,
        input: RpcMulti
    ) -> KitsuneP2pHandlerResult<Vec<RpcMultiResponse>>;
    fn handle_broadcast(
        &mut self,
        space: Arc<KitsuneSpace>,
        basis: Arc<KitsuneBasis>,
        timeout: KitsuneTimeout,
        data: BroadcastData
    ) -> KitsuneP2pHandlerResult<()>;
    fn handle_targeted_broadcast(
        &mut self,
        space: Arc<KitsuneSpace>,
        agents: Vec<Arc<KitsuneAgent>>,
        timeout: KitsuneTimeout,
        payload: Vec<u8>,
        drop_at_limit: bool
    ) -> KitsuneP2pHandlerResult<()>;
    fn handle_new_integrated_data(
        &mut self,
        space: Arc<KitsuneSpace>
    ) -> KitsuneP2pHandlerResult<()>;
    fn handle_authority_for_hash(
        &mut self,
        space: Arc<KitsuneSpace>,
        basis: Arc<KitsuneBasis>
    ) -> KitsuneP2pHandlerResult<bool>;
    fn handle_dump_network_metrics(
        &mut self,
        space: Option<Arc<KitsuneSpace>>
    ) -> KitsuneP2pHandlerResult<Value>;
    fn handle_dump_network_stats(&mut self) -> KitsuneP2pHandlerResult<Value>;
    fn handle_get_diagnostics(
        &mut self,
        space: Arc<KitsuneSpace>
    ) -> KitsuneP2pHandlerResult<KitsuneDiagnostics>;
}
Expand description

The KitsuneP2pSender allows async remote-control of the KitsuneP2p actor.

Required Methods§

source

fn handle_list_transport_bindings( &mut self ) -> KitsuneP2pHandlerResult<Vec<Url2>>

Get the calculated transport bindings.

source

fn handle_join( &mut self, space: Arc<KitsuneSpace>, agent: Arc<KitsuneAgent>, maybe_agent_info: Option<AgentInfoSigned>, initial_arc: Option<DhtArc> ) -> KitsuneP2pHandlerResult<()>

Announce a space/agent pair on this network.

source

fn handle_leave( &mut self, space: Arc<KitsuneSpace>, agent: Arc<KitsuneAgent> ) -> KitsuneP2pHandlerResult<()>

Withdraw this space/agent pair from this network.

source

fn handle_rpc_single( &mut self, space: Arc<KitsuneSpace>, to_agent: Arc<KitsuneAgent>, payload: Vec<u8>, timeout_ms: Option<u64> ) -> KitsuneP2pHandlerResult<Vec<u8>>

Make a request of a single remote agent, expecting a response. The remote side will receive a “Call” event.

source

fn handle_rpc_multi( &mut self, input: RpcMulti ) -> KitsuneP2pHandlerResult<Vec<RpcMultiResponse>>

Make a request to multiple destination agents - awaiting/aggregating the responses. The remote sides will see these messages as “Call” events. NOTE: We’ve currently disabled the “multi” part of this. It will still pick appropriate peers by basis, but will only make requests one at a time, returning the first success.

source

fn handle_broadcast( &mut self, space: Arc<KitsuneSpace>, basis: Arc<KitsuneBasis>, timeout: KitsuneTimeout, data: BroadcastData ) -> KitsuneP2pHandlerResult<()>

Publish data to a “neighborhood” of remote nodes surrounding the “basis” hash. This is a multi-step fire-and-forget algorithm. An Ok(()) result only means that we were able to establish at least one connection with a node in the target neighborhood. The remote sides will see these messages as “Notify” events.

source

fn handle_targeted_broadcast( &mut self, space: Arc<KitsuneSpace>, agents: Vec<Arc<KitsuneAgent>>, timeout: KitsuneTimeout, payload: Vec<u8>, drop_at_limit: bool ) -> KitsuneP2pHandlerResult<()>

Broadcast data to a specific set of agents without expecting a response. An Ok(()) result only means that we were able to establish at least one connection with a node in the agent set.

source

fn handle_new_integrated_data( &mut self, space: Arc<KitsuneSpace> ) -> KitsuneP2pHandlerResult<()>

New data has been integrated and is ready for gossiping.

source

fn handle_authority_for_hash( &mut self, space: Arc<KitsuneSpace>, basis: Arc<KitsuneBasis> ) -> KitsuneP2pHandlerResult<bool>

Check if an agent is an authority for a hash.

source

fn handle_dump_network_metrics( &mut self, space: Option<Arc<KitsuneSpace>> ) -> KitsuneP2pHandlerResult<Value>

dump network metrics

source

fn handle_dump_network_stats(&mut self) -> KitsuneP2pHandlerResult<Value>

dump network stats

source

fn handle_get_diagnostics( &mut self, space: Arc<KitsuneSpace> ) -> KitsuneP2pHandlerResult<KitsuneDiagnostics>

Get data for diagnostics

Object Safety§

This trait is not object safe.

Implementors§