Trait Message

Source
pub trait Message: Sized {
    // Required methods
    fn message_length(&self) -> usize;
    fn encode_body(&self, buf: &mut BytesMut) -> PgWireResult<()>;
    fn decode_body(
        buf: &mut BytesMut,
        full_len: usize,
        _ctx: &DecodeContext,
    ) -> PgWireResult<Self>;

    // Provided methods
    fn message_type() -> Option<u8> { ... }
    fn max_message_length() -> usize { ... }
    fn encode(&self, buf: &mut BytesMut) -> PgWireResult<()> { ... }
    fn decode(
        buf: &mut BytesMut,
        ctx: &DecodeContext,
    ) -> PgWireResult<Option<Self>> { ... }
}
Expand description

Define how message encode and decoded.

Required Methods§

Source

fn message_length(&self) -> usize

Return the length of the message, including the length integer itself.

Source

fn encode_body(&self, buf: &mut BytesMut) -> PgWireResult<()>

Encode body part of the message.

Source

fn decode_body( buf: &mut BytesMut, full_len: usize, _ctx: &DecodeContext, ) -> PgWireResult<Self>

Decode body part of the message.

Provided Methods§

Source

fn message_type() -> Option<u8>

Return the type code of the message. In order to maintain backward compatibility, Startup has no message type.

Source

fn max_message_length() -> usize

Return the max length of message in this type.

This is to validate the length field in decode

Source

fn encode(&self, buf: &mut BytesMut) -> PgWireResult<()>

Default implementation for encoding message.

Message type and length are encoded in this implementation and it calls encode_body for remaining parts.

Source

fn decode(buf: &mut BytesMut, ctx: &DecodeContext) -> PgWireResult<Option<Self>>

Default implementation for decoding message.

Message type and length are decoded in this implementation and it calls decode_body for remaining parts. Return None if the packet is not complete for parsing.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Message for GssEncResponse

Source§

impl Message for SslResponse

Source§

impl Message for Authentication

Source§

impl Message for PasswordMessageFamily

Source§

impl Message for CancelRequest

Source§

impl Message for CopyBothResponse

Source§

impl Message for CopyData

Source§

impl Message for CopyDone

Source§

impl Message for CopyFail

Source§

impl Message for CopyInResponse

Source§

impl Message for CopyOutResponse

Source§

impl Message for DataRow

Source§

impl Message for NoData

Source§

impl Message for ParameterDescription

Source§

impl Message for RowDescription

Source§

impl Message for Bind

Source§

impl Message for BindComplete

Source§

impl Message for Close

Source§

impl Message for CloseComplete

Source§

impl Message for Describe

Source§

impl Message for Execute

Source§

impl Message for Flush

Source§

impl Message for Parse

Source§

impl Message for ParseComplete

Source§

impl Message for PortalSuspended

Source§

impl Message for Sync

Source§

impl Message for CommandComplete

Source§

impl Message for EmptyQueryResponse

Source§

impl Message for ErrorResponse

Source§

impl Message for NoticeResponse

Source§

impl Message for NotificationResponse

Source§

impl Message for ReadyForQuery

Source§

impl Message for Query

Source§

impl Message for BackendKeyData

Source§

impl Message for GssEncRequest

Source§

impl Message for NegotiateProtocolVersion

Source§

impl Message for ParameterStatus

Source§

impl Message for Password

Source§

impl Message for SASLInitialResponse

Source§

impl Message for SASLResponse

Source§

impl Message for SslRequest

Source§

impl Message for Startup

Source§

impl Message for Terminate