Struct StreamedFrame

Source
pub struct StreamedFrame {
    pub attributes: Option<Attributes>,
    pub kind: FrameKind,
    /* private fields */
}
Expand description

A helper struct for reading and managing streaming data types.

use redis_protocol::resp3::decode::streaming::decode;

fn main() {
  let parts: Vec<Bytes> = vec!["*?\r\n".into(), ":1\r\n".into(), ":2\r\n".into(), ".\r\n".into()];

  let (frame, _) = decode(&parts[0]).unwrap().unwrap();
  assert!(frame.is_streaming());
  let mut streaming = frame.into_streaming_frame().unwrap();
  println!("Reading streaming {:?}", streaming.kind);

  let (frame, _) = decode(&parts[1]).unwrap().unwrap();
  assert!(frame.is_complete());
  // add frames to the buffer until we reach the terminating byte sequence
  streaming.add_frame(frame.into_complete_frame().unwrap());

  let (frame, _) = decode(&parts[2]).unwrap().unwrap();
  assert!(frame.is_complete());
  streaming.add_frame(frame.into_complete_frame().unwrap());

  let (frame, _) = decode(&parts[3]).unwrap().unwrap();
  assert!(frame.is_complete());
  streaming.add_frame(frame.into_complete_frame().unwrap());

  assert!(streaming.is_finished());
  // convert the buffer into one frame
  let result = streaming.into_frame().unwrap();

  // Frame::Array { data: [1, 2], attributes: None }
  println!("{:?}", result);
}

Fields§

§attributes: Option<Attributes>

Any leading attributes before the stream starts.

§kind: FrameKind

The data type being streamed.

Implementations§

Source§

impl StreamedFrame

Source

pub fn new(kind: FrameKind) -> Self

Create a new StreamedFrame from the first section of data in a streaming response.

Source

pub fn into_frame(&mut self) -> Result<Frame, RedisProtocolError>

Convert the internal buffer into one frame matching self.kind, clearing the internal buffer.

Source

pub fn add_frame(&mut self, data: Frame)

Add a frame to the internal buffer.

Source

pub fn is_finished(&self) -> bool

Whether or not the last frame represents the terminating sequence at the end of a frame stream.

Trait Implementations§

Source§

impl Debug for StreamedFrame

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for StreamedFrame

Source§

fn eq(&self, other: &StreamedFrame) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for StreamedFrame

Source§

impl StructuralPartialEq for StreamedFrame

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.