[][src]Trait fbthrift::protocol::Protocol

pub trait Protocol: 'static {
    type Frame: Framing;
    type Sizer: ProtocolWriter<Final = usize>;
    type Serializer: ProtocolWriter<Final = <<Self::Frame as Framing>::EncBuf as BufMutExt>::Final>;
    type Deserializer: ProtocolReader;

    pub const PROTOCOL_ID: ProtocolID;

    pub fn serializer<SZ, SER>(
        sz: SZ,
        ser: SER
    ) -> <Self::Serializer as ProtocolWriter>::Final
    where
        SZ: FnOnce(&mut Self::Sizer),
        SER: FnOnce(&mut Self::Serializer)
;
pub fn deserializer(
        buf: <Self::Frame as Framing>::DecBuf
    ) -> Self::Deserializer;
pub fn into_buffer(
        _: Self::Deserializer
    ) -> <Self::Frame as Framing>::DecBuf; }

An instance of Protocol glues a Framing implementation to a serializer (ProtocolWriter) and deserializer (ProtocolReader). It constructs, as needed, a serializer to construct a frame with a given protocol, or a deserializer from a frame into a stream of deserialized objects.

Associated Types

type Frame: Framing[src]

Type of the framing implementation

type Sizer: ProtocolWriter<Final = usize>[src]

Compute the size of a frame for a given protocol. This can be exact or too large, but must not be too small.

type Serializer: ProtocolWriter<Final = <<Self::Frame as Framing>::EncBuf as BufMutExt>::Final>[src]

Serialize into a buffer. The buffer is allocated with the size computed by Sizer, so it must be large enough.

type Deserializer: ProtocolReader[src]

Set up a deserializer from a frame's buffer.

Loading content...

Associated Constants

Loading content...

Required methods

pub fn serializer<SZ, SER>(
    sz: SZ,
    ser: SER
) -> <Self::Serializer as ProtocolWriter>::Final where
    SZ: FnOnce(&mut Self::Sizer),
    SER: FnOnce(&mut Self::Serializer), 
[src]

pub fn deserializer(buf: <Self::Frame as Framing>::DecBuf) -> Self::Deserializer[src]

pub fn into_buffer(_: Self::Deserializer) -> <Self::Frame as Framing>::DecBuf[src]

Loading content...

Implementors

impl<F> Protocol for BinaryProtocol<F> where
    F: Framing + 'static, 
[src]

type Frame = F

type Sizer = BinaryProtocolSerializer<SizeCounter>

type Serializer = BinaryProtocolSerializer<F::EncBuf>

type Deserializer = BinaryProtocolDeserializer<F::DecBuf>

impl<F> Protocol for CompactProtocol<F> where
    F: Framing + 'static, 
[src]

type Frame = F

type Sizer = CompactProtocolSerializer<SizeCounter>

type Serializer = CompactProtocolSerializer<F::EncBuf>

type Deserializer = CompactProtocolDeserializer<F::DecBuf>

impl<F> Protocol for SimpleJsonProtocol<F> where
    F: Framing + 'static, 
[src]

type Frame = F

type Sizer = SimpleJsonProtocolSerializer<SizeCounter>

type Serializer = SimpleJsonProtocolSerializer<F::EncBuf>

type Deserializer = SimpleJsonProtocolDeserializer<F::DecBuf>

Loading content...