Struct wisp_mux::ClientMux

source ·
pub struct ClientMux {
    pub downgraded: bool,
    pub supported_extension_ids: Vec<u8>,
    /* private fields */
}
Expand description

Client side multiplexor.

§Example

use wisp_mux::{ClientMux, StreamType};

let (mux, fut) = ClientMux::new(rx, tx, Some([])).await?;
tokio::spawn(async move {
    if let Err(e) = fut.await {
        println!("error in multiplexor: {:?}", e);
    }
});
let stream = mux.client_new_stream(StreamType::Tcp, "google.com", 80);

Fields§

§downgraded: bool

Whether the connection was downgraded to Wisp v1.

If this variable is true you must assume no extensions are supported.

§supported_extension_ids: Vec<u8>

Extensions that are supported by both sides.

Implementations§

source§

impl ClientMux

source

pub async fn create<R, W>( read: R, write: W, extension_builders: Option<&[Box<dyn ProtocolExtensionBuilder + Send + Sync>]> ) -> Result<ClientMuxResult<impl Future<Output = Result<(), WispError>> + Send>, WispError>
where R: WebSocketRead + Send, W: WebSocketWrite + Send + 'static,

Create a new client side multiplexor.

If extension_builders is None a Wisp v1 connection is created otherwise a Wisp v2 connection is created. It is not guaranteed that all extensions you specify are available. You must manually check if the extensions you need are available after the multiplexor has been created.

source

pub async fn client_new_stream( &self, stream_type: StreamType, host: String, port: u16 ) -> Result<MuxStream, WispError>

Create a new stream, multiplexed through Wisp.

source

pub async fn close(&self) -> Result<(), WispError>

Close all streams.

Also terminates the multiplexor future.

source

pub async fn close_extension_incompat(&self) -> Result<(), WispError>

Close all streams and send an extension incompatibility error to the client.

Also terminates the multiplexor future.

source

pub fn get_protocol_extension_stream(&self) -> MuxProtocolExtensionStream

Get a protocol extension stream for sending packets with stream id 0.

Trait Implementations§

source§

impl Drop for ClientMux

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

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

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, U> TryFrom<U> for T
where 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 T
where 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.
source§

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

source§

fn vzip(self) -> V