Struct RequestWriterService
pub struct RequestWriterService<S, W> { /* private fields */ }http and std only.Expand description
Middleware to print Http request in std format.
Request bodies are observed while they stream to the inner service. The writer receives an owned body stream and processes frames concurrently.
See the module docs for more details.
Implementations§
§impl<S, W> RequestWriterService<S, W>
impl<S, W> RequestWriterService<S, W>
pub fn new(inner: S, writer: W) -> RequestWriterService<S, W>
pub fn new(inner: S, writer: W) -> RequestWriterService<S, W>
Create a new RequestWriterService with a custom RequestWriter.
Use Self::new_with_executor when streaming writer tasks must
participate in graceful shutdown.
pub fn new_with_executor(
inner: S,
writer: W,
executor: Executor,
) -> RequestWriterService<S, W>
pub fn new_with_executor( inner: S, writer: W, executor: Executor, ) -> RequestWriterService<S, W>
Create a new RequestWriterService with a custom RequestWriter
and executor for streaming writer tasks.
§impl<S> RequestWriterService<S, UnboundedSender<Request>>
impl<S> RequestWriterService<S, UnboundedSender<Request>>
pub fn writer_unbounded<W>(
inner: S,
executor: &Executor,
writer: W,
mode: Option<WriterMode>,
) -> RequestWriterService<S, UnboundedSender<Request>>
pub fn writer_unbounded<W>( inner: S, executor: &Executor, writer: W, mode: Option<WriterMode>, ) -> RequestWriterService<S, UnboundedSender<Request>>
Create a new RequestWriterService that prints requests to an [AsyncWrite]r
over an unbounded channel
pub fn stdout_unbounded(
inner: S,
executor: &Executor,
mode: Option<WriterMode>,
) -> RequestWriterService<S, UnboundedSender<Request>>
pub fn stdout_unbounded( inner: S, executor: &Executor, mode: Option<WriterMode>, ) -> RequestWriterService<S, UnboundedSender<Request>>
Create a new RequestWriterService that prints requests to stdout
over an unbounded channel.
pub fn stderr_unbounded(
inner: S,
executor: &Executor,
mode: Option<WriterMode>,
) -> RequestWriterService<S, UnboundedSender<Request>>
pub fn stderr_unbounded( inner: S, executor: &Executor, mode: Option<WriterMode>, ) -> RequestWriterService<S, UnboundedSender<Request>>
Create a new RequestWriterService that prints requests to stderr
over an unbounded channel.
§impl<S> RequestWriterService<S, PerMessageFileWriter>
impl<S> RequestWriterService<S, PerMessageFileWriter>
pub async fn file_per_request(
inner: S,
executor: &Executor,
directory: impl Into<PathBuf>,
prefix: impl AsRef<str>,
mode: Option<WriterMode>,
) -> Result<RequestWriterService<S, PerMessageFileWriter>, Error>
pub async fn file_per_request( inner: S, executor: &Executor, directory: impl Into<PathBuf>, prefix: impl AsRef<str>, mode: Option<WriterMode>, ) -> Result<RequestWriterService<S, PerMessageFileWriter>, Error>
Create a service that streams every request into a unique file below
directory using the portable filename prefix.
§impl<S> RequestWriterService<S, Sender<Request>>
impl<S> RequestWriterService<S, Sender<Request>>
pub fn writer<W>(
inner: S,
executor: &Executor,
writer: W,
buffer_size: usize,
mode: Option<WriterMode>,
) -> RequestWriterService<S, Sender<Request>>
pub fn writer<W>( inner: S, executor: &Executor, writer: W, buffer_size: usize, mode: Option<WriterMode>, ) -> RequestWriterService<S, Sender<Request>>
Create a new RequestWriterService that prints requests to an [AsyncWrite]r
over a bounded channel with a fixed buffer size.
pub fn stdout(
inner: S,
executor: &Executor,
buffer_size: usize,
mode: Option<WriterMode>,
) -> RequestWriterService<S, Sender<Request>>
pub fn stdout( inner: S, executor: &Executor, buffer_size: usize, mode: Option<WriterMode>, ) -> RequestWriterService<S, Sender<Request>>
Create a new RequestWriterService that prints requests to stdout
over a bounded channel with a fixed buffer size.
pub fn stderr(
inner: S,
executor: &Executor,
buffer_size: usize,
mode: Option<WriterMode>,
) -> RequestWriterService<S, Sender<Request>>
pub fn stderr( inner: S, executor: &Executor, buffer_size: usize, mode: Option<WriterMode>, ) -> RequestWriterService<S, Sender<Request>>
Create a new RequestWriterService that prints requests to stderr
over a bounded channel with a fixed buffer size.
Trait Implementations§
§impl<S, W> Clone for RequestWriterService<S, W>
impl<S, W> Clone for RequestWriterService<S, W>
§fn clone(&self) -> RequestWriterService<S, W>
fn clone(&self) -> RequestWriterService<S, W>
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, W> Debug for RequestWriterService<S, W>where
S: Debug,
impl<S, W> Debug for RequestWriterService<S, W>where
S: Debug,
§impl<S, W, ReqBody> Service<Request<ReqBody>> for RequestWriterService<S, W>
impl<S, W, ReqBody> Service<Request<ReqBody>> for RequestWriterService<S, W>
§async fn serve(
&self,
req: Request<ReqBody>,
) -> Result<<RequestWriterService<S, W> as Service<Request<ReqBody>>>::Output, <RequestWriterService<S, W> as Service<Request<ReqBody>>>::Error>
async fn serve( &self, req: Request<ReqBody>, ) -> Result<<RequestWriterService<S, W> as Service<Request<ReqBody>>>::Output, <RequestWriterService<S, W> as Service<Request<ReqBody>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Auto Trait Implementations§
impl<S, W> Freeze for RequestWriterService<S, W>where
S: Freeze,
impl<S, W> RefUnwindSafe for RequestWriterService<S, W>where
S: RefUnwindSafe,
W: RefUnwindSafe,
impl<S, W> Send for RequestWriterService<S, W>
impl<S, W> Sync for RequestWriterService<S, W>
impl<S, W> Unpin for RequestWriterService<S, W>where
S: Unpin,
impl<S, W> UnsafeUnpin for RequestWriterService<S, W>where
S: UnsafeUnpin,
impl<S, W> UnwindSafe for RequestWriterService<S, W>where
S: UnwindSafe,
W: RefUnwindSafe,
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 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> 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