Struct LazyConnector
pub struct LazyConnector<S> { /* private fields */ }socks5 only.Expand description
Lazy Socks5Connector implementation,
which accepts a connection but delegates all the work
on the egress side to the inner (stream) service.
This connector is useful for proxy routers that need application bytes before
they can select an egress target. A regular MITM proxy should instead use
Connector and inspect its pre-established BridgeIo.
§Default Connectors
Please use Connector for the more common SOCKS5 proxy use case. It
establishes the destination connection before returning a successful reply,
ready for piping between the incoming and established streams.
Implementations§
§impl<S> LazyConnector<S>
impl<S> LazyConnector<S>
pub fn new(service: S) -> LazyConnector<S>
pub fn new(service: S) -> LazyConnector<S>
Create a new LazyConnector.
The default LazyConnector forwards the stream as-is to the
received proxy target.
§impl LazyConnector<IoToProxyBridgeIo<IoForwardService>>
impl LazyConnector<IoToProxyBridgeIo<IoForwardService>>
pub fn default_with_exec(
exec: Executor,
) -> LazyConnector<IoToProxyBridgeIo<IoForwardService>>
pub fn default_with_exec( exec: Executor, ) -> LazyConnector<IoToProxyBridgeIo<IoForwardService>>
Create a LazyConnector whose forward bridge observes graceful
shutdown via the given Executor.
Trait Implementations§
§impl<S> Clone for LazyConnector<S>where
S: Clone,
impl<S> Clone for LazyConnector<S>where
S: Clone,
§fn clone(&self) -> LazyConnector<S>
fn clone(&self) -> LazyConnector<S>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<S> Debug for LazyConnector<S>where
S: Debug,
impl<S> Debug for LazyConnector<S>where
S: Debug,
§impl Default for LazyConnector<IoToProxyBridgeIo<IoForwardService>>
impl Default for LazyConnector<IoToProxyBridgeIo<IoForwardService>>
§fn default() -> LazyConnector<IoToProxyBridgeIo<IoForwardService>>
fn default() -> LazyConnector<IoToProxyBridgeIo<IoForwardService>>
Auto Trait Implementations§
impl<S> Freeze for LazyConnector<S>where
S: Freeze,
impl<S> RefUnwindSafe for LazyConnector<S>where
S: RefUnwindSafe,
impl<S> Send for LazyConnector<S>where
S: Send,
impl<S> Sync for LazyConnector<S>where
S: Sync,
impl<S> Unpin for LazyConnector<S>where
S: Unpin,
impl<S> UnsafeUnpin for LazyConnector<S>where
S: UnsafeUnpin,
impl<S> UnwindSafe for LazyConnector<S>where
S: UnwindSafe,
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more