Struct PerMessageFileWriter
pub struct PerMessageFileWriter { /* private fields */ }http and std only.Expand description
Writes every captured request and response to an independent file.
Independent files allow bodies to stream concurrently without frame interleaving or cross-message backpressure. Generated filenames use only portable ASCII characters and are bounded to 160 bytes, comfortably below the commonly supported 255-byte component limit. The caller-provided destination can still be rejected by the operating system when the complete path exceeds a platform-specific path limit. Raw URIs are never included because they can contain secrets, path separators, platform-specific characters, or unbounded input. Request and response files captured for the same HTTP exchange contain the same UUID, regardless of request/response writer layer order.
Files are created without overwriting existing paths. On Unix, newly created files receive owner-only read/write permissions before the process umask is applied. The destination directory is canonicalized and every file open is confined to it.
Implementations§
§impl PerMessageFileWriter
impl PerMessageFileWriter
pub async fn try_new(
directory: impl Into<PathBuf>,
prefix: impl AsRef<str>,
) -> Result<PerMessageFileWriter, Error>
pub async fn try_new( directory: impl Into<PathBuf>, prefix: impl AsRef<str>, ) -> Result<PerMessageFileWriter, Error>
Create a per-message file writer, creating directory when necessary.
prefix must be 1 to 32 ASCII letters, digits, -, or _. This
deliberately conservative alphabet is valid in filenames on Unix,
Windows, and common removable filesystems.
pub fn with_request_mode(self, mode: Option<WriterMode>) -> PerMessageFileWriter
pub fn with_request_mode(self, mode: Option<WriterMode>) -> PerMessageFileWriter
Set how request files are written.
pub fn with_response_mode(
self,
mode: Option<WriterMode>,
) -> PerMessageFileWriter
pub fn with_response_mode( self, mode: Option<WriterMode>, ) -> PerMessageFileWriter
Set how response files are written.
pub const fn request_mode(&self) -> Option<WriterMode>
pub const fn request_mode(&self) -> Option<WriterMode>
Return the configured request writer mode.
pub const fn response_mode(&self) -> Option<WriterMode>
pub const fn response_mode(&self) -> Option<WriterMode>
Return the configured response writer mode.
Trait Implementations§
§impl Clone for PerMessageFileWriter
impl Clone for PerMessageFileWriter
§fn clone(&self) -> PerMessageFileWriter
fn clone(&self) -> PerMessageFileWriter
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for PerMessageFileWriter
impl Debug for PerMessageFileWriter
§impl RequestWriter for PerMessageFileWriter
impl RequestWriter for PerMessageFileWriter
§async fn write_request(&self, request: Request)
async fn write_request(&self, request: Request)
§impl ResponseWriter for PerMessageFileWriter
impl ResponseWriter for PerMessageFileWriter
§async fn write_response(&self, response: Response)
async fn write_response(&self, response: Response)
Auto Trait Implementations§
impl Freeze for PerMessageFileWriter
impl RefUnwindSafe for PerMessageFileWriter
impl Send for PerMessageFileWriter
impl Sync for PerMessageFileWriter
impl Unpin for PerMessageFileWriter
impl UnsafeUnpin for PerMessageFileWriter
impl UnwindSafe for PerMessageFileWriter
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