pub struct WireHeader {
pub flags: u16,
pub provider: u8,
pub session: u64,
pub content_type: u8,
pub accept_type: u8,
pub auth_type: u8,
pub body_len: u32,
pub auth_len: u16,
pub opcode: u32,
pub status: u16,
pub reserved1: u8,
pub reserved2: u8,
}
Expand description
Raw representation of a common request/response header, as defined for the wire format.
Serialisation and deserialisation are handled by serde
, also in tune with the
wire format (i.e. little-endian, native encoding).
Fields§
§flags: u16
Implementation-defined flags. Not used in Parsec currently. Must be present, but must be zero.
provider: u8
Provider ID value
session: u64
Session handle
content_type: u8
Content type: defines how the request body should be processed.
accept_type: u8
Accept type: defines how the service should provide its response.
auth_type: u8
Authentication type.
body_len: u32
Number of bytes of content.
auth_len: u16
Number of bytes of authentication.
opcode: u32
Opcode of the operation to perform.
status: u16
Response status of the request.
reserved1: u8
Reserved byte. Currently unused. Must be present. Must be zero.
reserved2: u8
Reserved byte. Currently unused. Must be present. Must be zero.
Implementations§
Source§impl WireHeader
impl WireHeader
Sourcepub fn write_to_stream<W: Write>(&self, stream: &mut W) -> Result<()>
pub fn write_to_stream<W: Write>(&self, stream: &mut W) -> Result<()>
Serialise the request header and write the corresponding bytes to the given stream.
§Errors
- if marshalling the header fails,
ResponseStatus::InvalidEncoding
is returned. - if writing the header bytes fails,
ResponseStatus::ConnectionError
is returned.
Sourcepub fn read_from_stream<R: Read>(stream: &mut R) -> Result<WireHeader>
pub fn read_from_stream<R: Read>(stream: &mut R) -> Result<WireHeader>
Deserialise a request header from the given stream.
§Errors
- if either the magic number, the header size or the reserved fields
are invalid values,
ResponseStatus::InvalidHeader
is returned. - if reading the fields after magic number and header size fails,
ResponseStatus::ConnectionError
is returned- the read may fail due to a timeout if not enough bytes are sent across
- if the parsed bytes cannot be unmarshalled into the contained fields,
ResponseStatus::InvalidEncoding
is returned. - if the wire protocol version used is different than 1.0
Trait Implementations§
Source§impl Clone for WireHeader
impl Clone for WireHeader
Source§fn clone(&self) -> WireHeader
fn clone(&self) -> WireHeader
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for WireHeader
impl Debug for WireHeader
Source§impl<'de> Deserialize<'de> for WireHeader
impl<'de> Deserialize<'de> for WireHeader
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<RequestHeader> for WireHeader
Conversion from native to raw request header.
impl From<RequestHeader> for WireHeader
Conversion from native to raw request header.
This is required in order to bring the contents of the header in a state which can be serialized.
Source§fn from(header: RequestHeader) -> Self
fn from(header: RequestHeader) -> Self
Source§impl From<ResponseHeader> for WireHeader
Conversion from native to raw response header.
impl From<ResponseHeader> for WireHeader
Conversion from native to raw response header.
This is required in order to bring the contents of the header in a state which can be serialized.
Source§fn from(header: ResponseHeader) -> Self
fn from(header: ResponseHeader) -> Self
Source§impl Serialize for WireHeader
impl Serialize for WireHeader
Source§impl TryFrom<WireHeader> for RequestHeader
Conversion from the raw to native request header.
impl TryFrom<WireHeader> for RequestHeader
Conversion from the raw to native request header.
This conversion must be done before a Request
value can be populated.
Source§impl TryFrom<WireHeader> for ResponseHeader
Conversion from the raw to native response header.
impl TryFrom<WireHeader> for ResponseHeader
Conversion from the raw to native response header.
This conversion must be done before a Response
value can be populated.