Struct RecordHeader
pub struct RecordHeader {
pub record_type: RecordType,
pub request_id: u16,
pub content_length: u16,
pub padding_length: u8,
}fastcgi only.Expand description
The 8-byte header that precedes every FastCGI record.
+---------+---------+-----------+-----------+---------------+-----------+---------+
| version | type | requestId | contentLength | paddingLen| reserved|
+---------+---------+-----------+-----------+---------------+-----------+---------+
| 1 | 1 | 1 | 1 | 1 1 | 1 | 1 |
+---------+---------+-----------+-----------+---------------+-----------+---------+versionis alwaysFCGI_VERSION_1(1).typeidentifies the record type.requestIdidentifies the request this record belongs to; 0 for management records.contentLengthis the number of bytes of content following the header.paddingLengthis the number of padding bytes following the content.reservedmust be zero.
Reference: FastCGI Specification §3.3
Fields§
§record_type: RecordType§request_id: u160 for management records; 1–65535 for application records.
content_length: u16Number of content bytes following this header (0–65535).
padding_length: u8Number of padding bytes following the content (0–255).
Implementations§
§impl RecordHeader
impl RecordHeader
pub fn new(
record_type: RecordType,
request_id: u16,
content_length: u16,
) -> RecordHeader
pub fn new( record_type: RecordType, request_id: u16, content_length: u16, ) -> RecordHeader
Create a new RecordHeader for an application record (non-zero requestId).
pub fn management(record_type: RecordType, content_length: u16) -> RecordHeader
pub fn management(record_type: RecordType, content_length: u16) -> RecordHeader
Create a new RecordHeader for a management record (requestId == 0).
pub async fn read_from<R>(r: &mut R) -> Result<RecordHeader, ProtocolError>where
R: AsyncRead + Unpin,
pub async fn read_from<R>(r: &mut R) -> Result<RecordHeader, ProtocolError>where
R: AsyncRead + Unpin,
Read a RecordHeader from the reader.
Reads all 8 bytes in a single read_exact call so the header is parsed
atomically: a future dropped mid-read either consumes the full header
or none of it (modulo what read_exact itself buffers), preventing
stream desync on a kept-alive connection.
Reference: FastCGI Specification §3.3
pub async fn write_to<W>(&self, w: &mut W) -> Result<(), Error>where
W: AsyncWrite + Unpin,
pub async fn write_to<W>(&self, w: &mut W) -> Result<(), Error>where
W: AsyncWrite + Unpin,
Write this RecordHeader to the writer.
Reference: FastCGI Specification §3.3
pub fn write_to_buf<B>(&self, buf: &mut B)where
B: BufMut,
pub fn write_to_buf<B>(&self, buf: &mut B)where
B: BufMut,
Write this RecordHeader into the buffer.
Reference: FastCGI Specification §3.3
Trait Implementations§
§impl Clone for RecordHeader
impl Clone for RecordHeader
§fn clone(&self) -> RecordHeader
fn clone(&self) -> RecordHeader
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 RecordHeader
impl Debug for RecordHeader
§impl PartialEq for RecordHeader
impl PartialEq for RecordHeader
impl Eq for RecordHeader
impl StructuralPartialEq for RecordHeader
Auto Trait Implementations§
impl Freeze for RecordHeader
impl RefUnwindSafe for RecordHeader
impl Send for RecordHeader
impl Sync for RecordHeader
impl Unpin for RecordHeader
impl UnsafeUnpin for RecordHeader
impl UnwindSafe for RecordHeader
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§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§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
value to writer§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
value to writer§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
value to writer§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
value to writer§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
value to writer