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
impl StreamedFrame
Sourcepub fn new(kind: FrameKind) -> Self
pub fn new(kind: FrameKind) -> Self
Create a new StreamedFrame
from the first section of data in a streaming response.
Sourcepub fn into_frame(&mut self) -> Result<Frame, RedisProtocolError>
pub fn into_frame(&mut self) -> Result<Frame, RedisProtocolError>
Convert the internal buffer into one frame matching self.kind
, clearing the internal buffer.
Sourcepub fn is_finished(&self) -> bool
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
impl Debug for StreamedFrame
Source§impl PartialEq for StreamedFrame
impl PartialEq for StreamedFrame
impl Eq for StreamedFrame
impl StructuralPartialEq for StreamedFrame
Auto Trait Implementations§
impl Freeze for StreamedFrame
impl RefUnwindSafe for StreamedFrame
impl Send for StreamedFrame
impl Sync for StreamedFrame
impl Unpin for StreamedFrame
impl UnwindSafe for StreamedFrame
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
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>
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 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>
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