Struct HaProxyService
pub struct HaProxyService<S, P = Tcp, V = Two> { /* private fields */ }Expand description
Service to encode and write the HaProxy Protocol as a client on the connected stream.
This connector should in most cases happen as the first thing after establishing the connection.
Implementations§
§impl<S> HaProxyService<S>
impl<S> HaProxyService<S>
pub fn tcp(inner: S) -> HaProxyService<S>
pub fn tcp(inner: S) -> HaProxyService<S>
Create a new HaProxyService for the TCP protocol (default).
This is in the PROXY spec referred to as:
- TCP4 (for IPv4, v1)
- TCP6 (for IPv6, v1)
- Stream (v2)
pub fn v1(self) -> HaProxyService<S, Tcp, One>
pub fn v1(self) -> HaProxyService<S, Tcp, One>
Use version one of PROXY protocol, instead of the default version two.
Version one makes use of a less advanced text protocol, instead the more advanced binary v2 protocol.
Use this only if you have no control over a v1-only server.
§impl<S> HaProxyService<S, Udp>
impl<S> HaProxyService<S, Udp>
pub fn udp(inner: S) -> HaProxyService<S, Udp>
pub fn udp(inner: S) -> HaProxyService<S, Udp>
Create a new HaProxyService for the UDP protocol,
instead of the default TCP protocol.
This is in the PROXY spec referred to as:
- Datagram (v2)
§impl<S, P> HaProxyService<S, P>
impl<S, P> HaProxyService<S, P>
pub fn with_payload(self, payload: impl Into<Bytes>) -> HaProxyService<S, P>
pub fn with_payload(self, payload: impl Into<Bytes>) -> HaProxyService<S, P>
Attach a custom bytes payload to the PROXY header.
NOTE this is only possible in Version two of the PROXY Protocol.
In case you downgrade this HaProxyLayer to version one later
using Self::v1 this payload will be dropped.
pub fn set_payload(
&mut self,
payload: impl Into<Bytes>,
) -> &mut HaProxyService<S, P>
pub fn set_payload( &mut self, payload: impl Into<Bytes>, ) -> &mut HaProxyService<S, P>
Attach a custom bytes payload to the PROXY header.
NOTE this is only possible in Version two of the PROXY Protocol.
In case you downgrade this HaProxyLayer to version one later
using Self::v1 this payload will be dropped.
Trait Implementations§
§impl<S, P, V> Clone for HaProxyService<S, P, V>
impl<S, P, V> Clone for HaProxyService<S, P, V>
§fn clone(&self) -> HaProxyService<S, P, V>
fn clone(&self) -> HaProxyService<S, P, V>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<S, P, V> Debug for HaProxyService<S, P, V>
impl<S, P, V> Debug for HaProxyService<S, P, V>
§impl<S, P, Request> Service<Request> for HaProxyService<S, P>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Socket + Unpin,
P: Protocol + Send + 'static,
Request: Send + ExtensionsRef + 'static,
impl<S, P, Request> Service<Request> for HaProxyService<S, P>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Socket + Unpin,
P: Protocol + Send + 'static,
Request: Send + ExtensionsRef + 'static,
§type Response = EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>
type Response = EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>
§async fn serve(
&self,
req: Request,
) -> Result<<HaProxyService<S, P> as Service<Request>>::Response, <HaProxyService<S, P> as Service<Request>>::Error>
async fn serve( &self, req: Request, ) -> Result<<HaProxyService<S, P> as Service<Request>>::Response, <HaProxyService<S, P> as Service<Request>>::Error>
§fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
§impl<S, P, Request> Service<Request> for HaProxyService<S, P, One>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Socket + Unpin,
P: Send + 'static,
Request: Send + ExtensionsRef + 'static,
impl<S, P, Request> Service<Request> for HaProxyService<S, P, One>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Socket + Unpin,
P: Send + 'static,
Request: Send + ExtensionsRef + 'static,
§type Response = EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>
type Response = EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>
§async fn serve(
&self,
req: Request,
) -> Result<<HaProxyService<S, P, One> as Service<Request>>::Response, <HaProxyService<S, P, One> as Service<Request>>::Error>
async fn serve( &self, req: Request, ) -> Result<<HaProxyService<S, P, One> as Service<Request>>::Response, <HaProxyService<S, P, One> as Service<Request>>::Error>
§fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
Auto Trait Implementations§
impl<S, P, V> Freeze for HaProxyService<S, P, V>
impl<S, P, V> RefUnwindSafe for HaProxyService<S, P, V>where
S: RefUnwindSafe,
V: RefUnwindSafe,
impl<S, P, V> Send for HaProxyService<S, P, V>
impl<S, P, V> Sync for HaProxyService<S, P, V>
impl<S, P, V> Unpin for HaProxyService<S, P, V>
impl<S, P, V> UnwindSafe for HaProxyService<S, P, V>where
S: UnwindSafe,
V: 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<S, Request, Connection> ConnectorService<Request> for S
impl<S, Request, Connection> ConnectorService<Request> for S
§type Connection = Connection
type Connection = Connection
ConnectorService§fn connect(
&self,
req: Request,
) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>, <S as ConnectorService<Request>>::Error>> + Send
fn connect( &self, req: Request, ) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>, <S as ConnectorService<Request>>::Error>> + Send
§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<S, Body> HttpClientExt for S
impl<S, Body> HttpClientExt for S
§type ExecuteResponse = Response<Body>
type ExecuteResponse = Response<Body>
execute method.§type ExecuteError = <S as Service<Request>>::Error
type ExecuteError = <S as Service<Request>>::Error
execute method.§fn get(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn get( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
GET request to a URL. Read more§fn post(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn post( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
POST request to a URL. Read more§fn put(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn put( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PUT request to a URL. Read more§fn patch(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn patch( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PATCH request to a URL. Read more§fn delete(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn delete( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
DELETE request to a URL. Read more§fn head(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn head( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
HEAD request to a URL. Read more§fn connect(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn connect( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
CONNECT request to a URL. Read more§fn request(
&self,
method: Method,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn request( &self, method: Method, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn build_from_request<RequestBody>(
&self,
request: Request<RequestBody>,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn build_from_request<RequestBody>( &self, request: Request<RequestBody>, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn execute(
&self,
request: Request,
) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
fn execute( &self, request: Request, ) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
Request. Read more§impl<S, Body> HttpClientWebSocketExt<Body> for S
impl<S, Body> HttpClientWebSocketExt<Body> for S
§fn websocket(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder] to be used to establish a WebSocket connection over http/1.1.§fn websocket_h2(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_h2( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder to be used to establish a WebSocket connection over h2.§fn websocket_with_request<RequestBody>(
&self,
req: Request<RequestBody>,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_with_request<RequestBody>( &self, req: Request<RequestBody>, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder starting from the given request. Read more§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<S, R> IntoEndpointService<(R,)> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
impl<S, R> IntoEndpointService<(R,)> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
§fn into_endpoint_service(
self,
) -> impl Service<Request, Response = Response, Error = Infallible>
fn into_endpoint_service( self, ) -> impl Service<Request, Response = Response, Error = Infallible>
rama_core::Service.§impl<S, R, State> IntoEndpointServiceWithState<(R,), State> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
impl<S, R, State> IntoEndpointServiceWithState<(R,), State> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
§fn into_endpoint_service_with_state(
self,
_state: State,
) -> impl Service<Request, Response = Response, Error = Infallible>
fn into_endpoint_service_with_state( self, _state: State, ) -> impl Service<Request, Response = Response, Error = Infallible>
rama_core::Service with state.§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