MakeThriftConnectionFromAddrs

Struct MakeThriftConnectionFromAddrs 

Source
pub struct MakeThriftConnectionFromAddrs<T, S> { /* private fields */ }
Expand description

A MakeThriftConnection that attempts to create new connections from a ToSocketAddrs and a FromProtocol

The connection is created in accordance with the thrift rust tutorial:

For that to happen, T needs to be able to create the Read/Write Transports and Input/Output Protocols from the ReadHalf and WriteHalf of the TTcpChannel. Those contraints should be fairly easily satisfied by implementing the relevant traits in the library


use thrift_pool::{MakeThriftConnectionFromAddrs, FromProtocol};

use thrift::{
    protocol::{TCompactInputProtocol, TCompactOutputProtocol, TInputProtocol, TOutputProtocol},
    transport::{
        ReadHalf, TFramedReadTransport, TFramedWriteTransport, TIoChannel, TReadTransport,
        TTcpChannel, TWriteTransport, WriteHalf,
    },
};

// A typical generated client looks like this
struct MyThriftClient<Ip: TInputProtocol, Op: TOutputProtocol> {
    i_prot: Ip,
    o_prot: Op,
}
impl<Ip: TInputProtocol, Op: TOutputProtocol> FromProtocol for MyThriftClient<Ip, Op> {
    type InputProtocol = Ip;

    type OutputProtocol = Op;

    fn from_protocol(
        input_protocol: Self::InputProtocol,
        output_protocol: Self::OutputProtocol,
    ) -> Self {
        MyThriftClient {
            i_prot: input_protocol,
            o_prot: output_protocol,
        }
    }
}
type Client = MyThriftClient<
    TCompactInputProtocol<TFramedReadTransport<ReadHalf<TTcpChannel>>>,
    TCompactOutputProtocol<TFramedWriteTransport<WriteHalf<TTcpChannel>>>,
>;

// The Protocols/Transports used in this client implement the necessary traits so we can do this
let manager =
    MakeThriftConnectionFromAddrs::<Client, _>::new("localhost:9090").into_connection_manager();

Implementations§

Source§

impl<T, S> MakeThriftConnectionFromAddrs<T, S>

Source

pub fn new(addrs: S) -> Self

Source§

impl<S: ToSocketAddrs + Clone, RT: FromRead<Read = ReadHalf<TTcpChannel>>, IP: FromReadTransport<ReadTransport = RT>, WT: FromWrite<Write = WriteHalf<TTcpChannel>>, OP: FromWriteTransport<WriteTransport = WT>, T: FromProtocol<InputProtocol = IP, OutputProtocol = OP>> MakeThriftConnectionFromAddrs<T, S>

Trait Implementations§

Source§

impl<T, S: Clone> Clone for MakeThriftConnectionFromAddrs<T, S>

Source§

fn clone(&self) -> Self

Returns a duplicate 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<T, S: Debug> Debug for MakeThriftConnectionFromAddrs<T, S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<S: ToSocketAddrs + Clone, RT: FromRead<Read = ReadHalf<TTcpChannel>>, IP: FromReadTransport<ReadTransport = RT>, WT: FromWrite<Write = WriteHalf<TTcpChannel>>, OP: FromWriteTransport<WriteTransport = WT>, T: FromProtocol<InputProtocol = IP, OutputProtocol = OP>> MakeThriftConnection for MakeThriftConnectionFromAddrs<T, S>

Source§

type Error = Error

The error type returned when a connection creation fails
Source§

type Output = T

The connection type the we are trying to create
Source§

fn make_thrift_connection(&self) -> Result<Self::Output, Self::Error>

Attempt to create a new connection Read more

Auto Trait Implementations§

§

impl<T, S> Freeze for MakeThriftConnectionFromAddrs<T, S>
where S: Freeze,

§

impl<T, S> RefUnwindSafe for MakeThriftConnectionFromAddrs<T, S>

§

impl<T, S> Send for MakeThriftConnectionFromAddrs<T, S>
where S: Send, T: Send,

§

impl<T, S> Sync for MakeThriftConnectionFromAddrs<T, S>
where S: Sync, T: Sync,

§

impl<T, S> Unpin for MakeThriftConnectionFromAddrs<T, S>
where S: Unpin, T: Unpin,

§

impl<T, S> UnwindSafe for MakeThriftConnectionFromAddrs<T, S>
where S: UnwindSafe, T: UnwindSafe,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

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