Skip to main content

Connector

Struct Connector 

Source
pub struct Connector<C: Codec<ByteBuffer> + Default + Clone> {
    key_pair: KeyPair,
    task_group: TaskGroup,
    connection_slots: Arc<ConnectionSlots>,
    max_retries: usize,
    conn_queue: Option<Arc<ConnQueue>>,
    monitor: Arc<Monitor>,
    _codec: PhantomData<C>,
}
Expand description

Creates outbound connections with other peers. Generic over the codec applied to the resulting framed stream so the same machinery (TLS, retries, slots, monitor events) serves both the peer data-plane (PeerNetMsgCodec) and the kademlia lookup-plane (KadNetMsgCodec).

Fields§

§key_pair: KeyPair§task_group: TaskGroup§connection_slots: Arc<ConnectionSlots>§max_retries: usize§conn_queue: Option<Arc<ConnQueue>>§monitor: Arc<Monitor>§_codec: PhantomData<C>

Implementations§

Source§

impl<C> Connector<C>
where C: Codec<ByteBuffer, Error = Error> + Default + Clone + Send + Sync + 'static,

Source

pub fn new( key_pair: &KeyPair, max_retries: usize, connection_slots: Arc<ConnectionSlots>, monitor: Arc<Monitor>, ex: Executor, ) -> Arc<Self>

Create a new Connector without a ConnQueue (used for plain connect paths like Kademlia lookup).

Source

pub async fn shutdown(&self)

Source

pub async fn connect( &self, endpoint: &Endpoint, peer_id: &Option<PeerID>, ) -> Result<FramedConn<C>>

Connect and return the framed connection.

Source

async fn connect_internal( &self, endpoint: &Endpoint, peer_id: &Option<PeerID>, ) -> Result<DialResult<C>>

Dial with retries.

Source

async fn dial( &self, endpoint: &Endpoint, peer_id: &Option<PeerID>, ) -> Result<DialResult<C>>

Dial, selecting transport based on endpoint type.

Source§

impl Connector<PeerNetMsgCodec>

Source

pub fn new_with_queue( key_pair: &KeyPair, max_retries: usize, connection_slots: Arc<ConnectionSlots>, conn_queue: Arc<ConnQueue>, monitor: Arc<Monitor>, ex: Executor, ) -> Arc<Self>

Create a new Connector with a ConnQueue.

Source

pub async fn connect_and_queue( self: &Arc<Self>, endpoint: &Endpoint, peer_id: &Option<PeerID>, ) -> Result<()>

Connect, queue for handshake, and run until the peer disconnects. Disconnect/handshake-failure is observable via PeerPool::register_peer_events, not via this call.

Auto Trait Implementations§

§

impl<C> !Freeze for Connector<C>

§

impl<C> !RefUnwindSafe for Connector<C>

§

impl<C> Send for Connector<C>

§

impl<C> Sync for Connector<C>

§

impl<C> Unpin for Connector<C>
where C: Unpin,

§

impl<C> UnsafeUnpin for Connector<C>

§

impl<C> !UnwindSafe for Connector<C>

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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 T
where 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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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