Struct TlsConnector
pub struct TlsConnector<S, K = ConnectorKindAuto> { /* private fields */ }boring only.Expand description
A connector which can be used to establish a connection to a server.
By default it will created in auto mode (TlsConnector::auto),
which will perform the Tls handshake on the underlying stream,
only if the request requires a secure connection. You can instead use
TlsConnector::secure to force the connector to always
establish a secure connection.
Implementations§
§impl<S, K> TlsConnector<S, K>
impl<S, K> TlsConnector<S, K>
pub fn maybe_with_base_config(
self,
base: Option<TlsClientConfig>,
) -> TlsConnector<S, K>
pub fn maybe_with_base_config( self, base: Option<TlsClientConfig>, ) -> TlsConnector<S, K>
Set the base TlsClientConfig for this connector.
Auto and secure connectors layer per-request TLS pieces on top of this
base. Tunnel connectors intentionally use only this base plus the
proxy-scoped TlsTunnel fields.
pub fn maybe_set_base_config(
&mut self,
base: Option<TlsClientConfig>,
) -> &mut TlsConnector<S, K>
pub fn maybe_set_base_config( &mut self, base: Option<TlsClientConfig>, ) -> &mut TlsConnector<S, K>
Set the base TlsClientConfig for this connector.
Auto and secure connectors layer per-request TLS pieces on top of this
base. Tunnel connectors intentionally use only this base plus the
proxy-scoped TlsTunnel fields.
pub fn with_base_config(self, base: TlsClientConfig) -> TlsConnector<S, K>
pub fn with_base_config(self, base: TlsClientConfig) -> TlsConnector<S, K>
Set the base TlsClientConfig for this connector.
Auto and secure connectors layer per-request TLS pieces on top of this
base. Tunnel connectors intentionally use only this base plus the
proxy-scoped TlsTunnel fields.
pub fn set_base_config(
&mut self,
base: TlsClientConfig,
) -> &mut TlsConnector<S, K>
pub fn set_base_config( &mut self, base: TlsClientConfig, ) -> &mut TlsConnector<S, K>
Set the base TlsClientConfig for this connector.
Auto and secure connectors layer per-request TLS pieces on top of this
base. Tunnel connectors intentionally use only this base plus the
proxy-scoped TlsTunnel fields.
pub fn without_base_config(self) -> TlsConnector<S, K>
pub fn without_base_config(self) -> TlsConnector<S, K>
Set the base TlsClientConfig for this connector.
Auto and secure connectors layer per-request TLS pieces on top of this
base. Tunnel connectors intentionally use only this base plus the
proxy-scoped TlsTunnel fields.
pub fn unset_base_config(&mut self) -> &mut TlsConnector<S, K>
pub fn unset_base_config(&mut self) -> &mut TlsConnector<S, K>
Set the base TlsClientConfig for this connector.
Auto and secure connectors layer per-request TLS pieces on top of this
base. Tunnel connectors intentionally use only this base plus the
proxy-scoped TlsTunnel fields.
pub fn maybe_with_session_store(
self,
store: Option<Arc<dyn TlsClientSessionStore>>,
) -> TlsConnector<S, K>
pub fn maybe_with_session_store( self, store: Option<Arc<dyn TlsClientSessionStore>>, ) -> TlsConnector<S, K>
Resume TLS sessions with servers this connector connected to before,
keeping them in store. Off by default.
A session only resumes with the server identity it was established with, under the same security policy and optional emulation profile scope. Compatible drawn extension orders can use sibling native contexts. Separate connectors stay isolated even when they share a store; clones of this connector share its session domain.
pub fn maybe_set_session_store(
&mut self,
store: Option<Arc<dyn TlsClientSessionStore>>,
) -> &mut TlsConnector<S, K>
pub fn maybe_set_session_store( &mut self, store: Option<Arc<dyn TlsClientSessionStore>>, ) -> &mut TlsConnector<S, K>
Resume TLS sessions with servers this connector connected to before,
keeping them in store. Off by default.
A session only resumes with the server identity it was established with, under the same security policy and optional emulation profile scope. Compatible drawn extension orders can use sibling native contexts. Separate connectors stay isolated even when they share a store; clones of this connector share its session domain.
pub fn with_session_store(
self,
store: Arc<dyn TlsClientSessionStore>,
) -> TlsConnector<S, K>
pub fn with_session_store( self, store: Arc<dyn TlsClientSessionStore>, ) -> TlsConnector<S, K>
Resume TLS sessions with servers this connector connected to before,
keeping them in store. Off by default.
A session only resumes with the server identity it was established with, under the same security policy and optional emulation profile scope. Compatible drawn extension orders can use sibling native contexts. Separate connectors stay isolated even when they share a store; clones of this connector share its session domain.
pub fn set_session_store(
&mut self,
store: Arc<dyn TlsClientSessionStore>,
) -> &mut TlsConnector<S, K>
pub fn set_session_store( &mut self, store: Arc<dyn TlsClientSessionStore>, ) -> &mut TlsConnector<S, K>
Resume TLS sessions with servers this connector connected to before,
keeping them in store. Off by default.
A session only resumes with the server identity it was established with, under the same security policy and optional emulation profile scope. Compatible drawn extension orders can use sibling native contexts. Separate connectors stay isolated even when they share a store; clones of this connector share its session domain.
pub fn without_session_store(self) -> TlsConnector<S, K>
pub fn without_session_store(self) -> TlsConnector<S, K>
Resume TLS sessions with servers this connector connected to before,
keeping them in store. Off by default.
A session only resumes with the server identity it was established with, under the same security policy and optional emulation profile scope. Compatible drawn extension orders can use sibling native contexts. Separate connectors stay isolated even when they share a store; clones of this connector share its session domain.
pub fn unset_session_store(&mut self) -> &mut TlsConnector<S, K>
pub fn unset_session_store(&mut self) -> &mut TlsConnector<S, K>
Resume TLS sessions with servers this connector connected to before,
keeping them in store. Off by default.
A session only resumes with the server identity it was established with, under the same security policy and optional emulation profile scope. Compatible drawn extension orders can use sibling native contexts. Separate connectors stay isolated even when they share a store; clones of this connector share its session domain.
§impl<S> TlsConnector<S>
impl<S> TlsConnector<S>
pub const fn auto(inner: S) -> TlsConnector<S>
pub const fn auto(inner: S) -> TlsConnector<S>
Creates a new TlsConnector which will establish
a secure connection when the input protocol is secure. Otherwise it
forwards the inner connection. The logical authority remains the default
server identity.
§impl<S> TlsConnector<S, ConnectorKindSecure>
impl<S> TlsConnector<S, ConnectorKindSecure>
pub const fn secure(inner: S) -> TlsConnector<S, ConnectorKindSecure>
pub const fn secure(inner: S) -> TlsConnector<S, ConnectorKindSecure>
Creates a new TlsConnector which will always
establish a secure connection regardless of the request it is for.
§impl<S> TlsConnector<S, ConnectorKindTunnel>
impl<S> TlsConnector<S, ConnectorKindTunnel>
pub const fn tunnel(
inner: S,
host: Option<Host>,
) -> TlsConnector<S, ConnectorKindTunnel>
pub const fn tunnel( inner: S, host: Option<Host>, ) -> TlsConnector<S, ConnectorKindTunnel>
Creates a new TlsConnector which will establish
a secure connection if the request is to be tunneled.
Trait Implementations§
§impl<S, K> Clone for TlsConnector<S, K>
impl<S, K> Clone for TlsConnector<S, K>
§fn clone(&self) -> TlsConnector<S, K>
fn clone(&self) -> TlsConnector<S, K>
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, K> Debug for TlsConnector<S, K>
impl<S, K> Debug for TlsConnector<S, K>
§impl<S, Input> Service<Input> for TlsConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for TlsConnector<S>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
§type Output = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Output = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Input>>::Connection>, Input>
§type Error = ConnectionError
type Error = ConnectionError
§async fn serve(
&self,
input: Input,
) -> Result<<TlsConnector<S> as Service<Input>>::Output, <TlsConnector<S> as Service<Input>>::Error>
async fn serve( &self, input: Input, ) -> Result<<TlsConnector<S> as Service<Input>>::Output, <TlsConnector<S> as Service<Input>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§impl<S, Input> Service<Input> for TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: AuthorityInputExt + ProtocolInputExt + Send + ExtensionsRef + 'static,
§type Output = EstablishedClientConnection<TlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Output = EstablishedClientConnection<TlsStream<<S as ConnectorService<Input>>::Connection>, Input>
§type Error = ConnectionError
type Error = ConnectionError
§async fn serve(
&self,
input: Input,
) -> Result<<TlsConnector<S, ConnectorKindSecure> as Service<Input>>::Output, <TlsConnector<S, ConnectorKindSecure> as Service<Input>>::Error>
async fn serve( &self, input: Input, ) -> Result<<TlsConnector<S, ConnectorKindSecure> as Service<Input>>::Output, <TlsConnector<S, ConnectorKindSecure> as Service<Input>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
§impl<S, Input> Service<Input> for TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: Send + ExtensionsRef + 'static,
impl<S, Input> Service<Input> for TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Input>,
<S as ConnectorService<Input>>::Connection: Io + Unpin,
Input: Send + ExtensionsRef + 'static,
§type Output = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Input>>::Connection>, Input>
type Output = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Input>>::Connection>, Input>
§type Error = ConnectionError
type Error = ConnectionError
§async fn serve(
&self,
input: Input,
) -> Result<<TlsConnector<S, ConnectorKindTunnel> as Service<Input>>::Output, <TlsConnector<S, ConnectorKindTunnel> as Service<Input>>::Error>
async fn serve( &self, input: Input, ) -> Result<<TlsConnector<S, ConnectorKindTunnel> as Service<Input>>::Output, <TlsConnector<S, ConnectorKindTunnel> as Service<Input>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Auto Trait Implementations§
impl<S, K = ConnectorKindAuto> !RefUnwindSafe for TlsConnector<S, K>
impl<S, K = ConnectorKindAuto> !UnwindSafe for TlsConnector<S, K>
impl<S, K> Freeze for TlsConnector<S, K>
impl<S, K> Send for TlsConnector<S, K>
impl<S, K> Sync for TlsConnector<S, K>
impl<S, K> Unpin for TlsConnector<S, K>
impl<S, K> UnsafeUnpin for TlsConnector<S, K>where
S: UnsafeUnpin,
K: UnsafeUnpin,
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<S, Input, Connection> ConnectorService<Input> for Swhere
S: Service<Input, Output = EstablishedClientConnection<Connection, Input>>,
<S as Service<Input>>::Error: Into<ConnectionError>,
Connection: Send + ExtensionsRef,
impl<S, Input, Connection> ConnectorService<Input> for Swhere
S: Service<Input, Output = EstablishedClientConnection<Connection, Input>>,
<S as Service<Input>>::Error: Into<ConnectionError>,
Connection: Send + ExtensionsRef,
§type Connection = Connection
type Connection = Connection
ConnectorService§fn connect(
&self,
input: Input,
) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>, ConnectionError>> + Send
fn connect( &self, input: Input, ) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>, ConnectionError>> + 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<T, ReqBody, ResBody> GrpcService<ReqBody> for T
impl<T, ReqBody, ResBody> GrpcService<ReqBody> for T
§type ResponseBody = ResBody
type ResponseBody = ResBody
§fn serve(
&self,
request: Request<ReqBody>,
) -> impl Future<Output = Result<Response<<T as GrpcService<ReqBody>>::ResponseBody>, <T as GrpcService<ReqBody>>::Error>> + Send
fn serve( &self, request: Request<ReqBody>, ) -> impl Future<Output = Result<Response<<T as GrpcService<ReqBody>>::ResponseBody>, <T as GrpcService<ReqBody>>::Error>> + Send
§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 query(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn query( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
QUERY 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_h3(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_h3( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder to be used to establish a WebSocket connection over h3.§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> IntoEndpointService<(S,)> for S
impl<S> IntoEndpointService<(S,)> for S
type Service = S
§fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
rama_core::Service.§impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
type Service = S
§fn into_endpoint_service_with_state(
self,
_state: State,
) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service
fn into_endpoint_service_with_state( self, _state: State, ) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service
rama_core::Service with state.§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