pub struct SwitchboardEventHandler { /* private fields */ }
Expand description

Stateful handler for KitsuneP2pEvents.

This is a very basic in-memory implementation of an event handler similar to what a Kitsune implementor like Holochain would implement. It’s used to implement nodes in the Switchboard.

Implementations§

Trait Implementations§

source§

impl Clone for SwitchboardEventHandler

source§

fn clone(&self) -> SwitchboardEventHandler

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl FetchPoolConfig for SwitchboardEventHandler

source§

fn merge_fetch_contexts(&self, _a: u32, _b: u32) -> u32

When a fetch key is added twice, this determines how the two different contexts get reconciled.
§

fn item_retry_delay(&self) -> Duration

How long between successive item fetches, regardless of source? This gives a source a fair chance to respond before proceeding with a different source. Read more
§

fn source_retry_delay(&self) -> Duration

How long between successive fetches from a particular source, for a particular item? This protects us from wasting resources on a source which may be offline. This will eventually be replaced with an exponential backoff which will be tracked for this source across all items.
source§

impl GhostControlHandler for SwitchboardEventHandler

source§

fn handle_ghost_actor_shutdown(self) -> MustBoxFuture<'static, ()>

Called when the actor task loops ends. Allows for any needed cleanup / triggers.
source§

impl GhostHandler<KitsuneP2pEvent> for SwitchboardEventHandler

source§

fn ghost_actor_dispatch(&mut self, d: D)

Process a dispatch event with this GhostHandler.
source§

impl KitsuneHost for SwitchboardEventHandler

source§

fn block( &self, _input: Block ) -> MustBoxFuture<'_, Result<(), Box<dyn Error + Send + Sync + 'static, Global>>>

We are requesting a block.
source§

fn unblock( &self, _input: Block ) -> MustBoxFuture<'_, Result<(), Box<dyn Error + Send + Sync + 'static, Global>>>

We are requesting an unblock.
source§

fn is_blocked( &self, _input: BlockTargetId, _timestamp: Timestamp ) -> MustBoxFuture<'_, Result<bool, Box<dyn Error + Send + Sync + 'static, Global>>>

We want to know if a target is blocked.
source§

fn get_agent_info_signed( &self, _: GetAgentInfoSignedEvt ) -> MustBoxFuture<'_, Result<Option<AgentInfoSigned>, Box<dyn Error + Send + Sync + 'static, Global>>>

We need to get previously stored agent info.
source§

fn remove_agent_info_signed( &self, _: GetAgentInfoSignedEvt ) -> MustBoxFuture<'_, Result<bool, Box<dyn Error + Send + Sync + 'static, Global>>>

Remove an agent info from storage
source§

fn peer_extrapolated_coverage( &self, _space: Arc<KitsuneSpace>, _dht_arc_set: DhtArcSet ) -> MustBoxFuture<'_, Result<Vec<f64, Global>, Box<dyn Error + Send + Sync + 'static, Global>>>

Extrapolated Peer Coverage.
source§

fn record_metrics( &self, _space: Arc<KitsuneSpace>, _records: Vec<MetricRecord, Global> ) -> MustBoxFuture<'_, Result<(), Box<dyn Error + Send + Sync + 'static, Global>>>

Record a set of metric records.
source§

fn query_size_limited_regions( &self, _space: Arc<KitsuneSpace>, _size_limit: u32, regions: Vec<Region<RegionData>, Global> ) -> MustBoxFuture<'_, Result<Vec<Region<RegionData>, Global>, Box<dyn Error + Send + Sync + 'static, Global>>>

Given an input list of regions, return a list of equal or greater length such that each region’s size is less than the size_limit, by recursively subdividing regions which are over the size limit.
source§

fn query_region_set( &self, space: Arc<KitsuneSpace>, dht_arc_set: Arc<DhtArcSet> ) -> MustBoxFuture<'_, Result<RegionSetLtcs<RegionData>, Box<dyn Error + Send + Sync + 'static, Global>>>

Query aggregate dht op data to form an LTCS set of region data.
source§

fn get_topology( &self, _space: Arc<KitsuneSpace> ) -> MustBoxFuture<'_, Result<Topology, Box<dyn Error + Send + Sync + 'static, Global>>>

Get the quantum Topology associated with this Space.
source§

fn op_hash( &self, _op_data: Arc<KitsuneOpData> ) -> MustBoxFuture<'_, Result<Arc<KitsuneOpHash>, Box<dyn Error + Send + Sync + 'static, Global>>>

Hashing function to get an op_hash from op_data.
source§

fn query_op_hashes_by_region( &self, _space: Arc<KitsuneSpace>, _region: RegionCoords ) -> MustBoxFuture<'_, Result<Vec<RoughSized<Arc<KitsuneOpHash>>, Global>, Box<dyn Error + Send + Sync + 'static, Global>>>

Get all op hashes within a region
source§

fn check_op_data( &self, space: Arc<KitsuneSpace>, op_hash_list: Vec<Arc<KitsuneOpHash>, Global>, _context: Option<FetchContext> ) -> MustBoxFuture<'_, Result<Vec<bool, Global>, Box<dyn Error + Send + Sync + 'static, Global>>>

Check which hashes we have data for.
source§

fn lair_tag(&self) -> Option<Arc<str>>

Get the lair “tag” identifying the id seed to use for crypto signing. (this is currently only used in tx5/WebRTC if that feature is enabled.)
source§

fn lair_client(&self) -> Option<LairClient>

Get the lair client to use as the backend keystore. (this is currently only used in tx5/WebRTC if that feature is enabled.)
source§

impl KitsuneP2pEventHandler for SwitchboardEventHandler

source§

fn handle_put_agent_info_signed( &mut self, _: PutAgentInfoSignedEvt ) -> Result<MustBoxFuture<'static, Result<(), KitsuneP2pError>>, KitsuneP2pError>

We need to store signed agent info.
source§

fn handle_query_agents( &mut self, _: QueryAgentsEvt ) -> Result<MustBoxFuture<'static, Result<Vec<AgentInfoSigned, Global>, KitsuneP2pError>>, KitsuneP2pError>

We need to get previously stored agent info.
source§

fn handle_query_peer_density( &mut self, space: Arc<KitsuneSpace>, dht_arc: DhtArc ) -> Result<MustBoxFuture<'static, Result<PeerView, KitsuneP2pError>>, KitsuneP2pError>

Query the peer density of a space for a given [DhtArc].
source§

fn handle_call( &mut self, space: Arc<KitsuneSpace>, to_agent: Arc<KitsuneAgent>, payload: Vec<u8, Global> ) -> Result<MustBoxFuture<'static, Result<Vec<u8, Global>, KitsuneP2pError>>, KitsuneP2pError>

We are receiving a request from a remote node.
source§

fn handle_notify( &mut self, space: Arc<KitsuneSpace>, to_agent: Arc<KitsuneAgent>, payload: Vec<u8, Global> ) -> Result<MustBoxFuture<'static, Result<(), KitsuneP2pError>>, KitsuneP2pError>

We are receiving a notification from a remote node.
source§

fn handle_receive_ops( &mut self, _space: Arc<KitsuneSpace>, ops: Vec<Arc<KitsuneOpData>, Global>, _context: Option<FetchContext> ) -> Result<MustBoxFuture<'static, Result<(), KitsuneP2pError>>, KitsuneP2pError>

We have received ops to be integrated, either through gossip or publish.
source§

fn handle_query_op_hashes( &mut self, _: QueryOpHashesEvt ) -> Result<MustBoxFuture<'static, Result<Option<(Vec<Arc<KitsuneOpHash>, Global>, RangeInclusive<Timestamp>)>, KitsuneP2pError>>, KitsuneP2pError>

Gather a list of op-hashes from our implementor that meet criteria. Get the oldest and newest times for ops within a time window and max number of ops.
source§

fn handle_fetch_op_data( &mut self, _: FetchOpDataEvt ) -> Result<MustBoxFuture<'static, Result<Vec<(Arc<KitsuneOpHash>, Arc<KitsuneOpData>), Global>, KitsuneP2pError>>, KitsuneP2pError>

Gather all op-hash data for a list of op-hashes from our implementor.
source§

fn handle_sign_network_data( &mut self, input: SignNetworkDataEvt ) -> Result<MustBoxFuture<'static, Result<KitsuneSignature, KitsuneP2pError>>, KitsuneP2pError>

Request that our implementor sign some data on behalf of an agent.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Any for Twhere T: Any,

§

fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for Twhere T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync + 'static>

§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

§

fn deserialize( &self, deserializer: &mut D ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcastable for Twhere T: Any + Send + Sync + 'static,

§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
§

fn upcast_any_box(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>

upcast boxed dyn
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more