Struct redis_protocol::resp3::types::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
sourceimpl 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
sourceimpl Debug for StreamedFrame
impl Debug for StreamedFrame
sourceimpl PartialEq<StreamedFrame> for StreamedFrame
impl PartialEq<StreamedFrame> for StreamedFrame
sourcefn eq(&self, other: &StreamedFrame) -> bool
fn eq(&self, other: &StreamedFrame) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &StreamedFrame) -> bool
fn ne(&self, other: &StreamedFrame) -> bool
This method tests for !=
.
impl Eq for StreamedFrame
impl StructuralEq for StreamedFrame
impl StructuralPartialEq for StreamedFrame
Auto Trait Implementations
impl RefUnwindSafe for StreamedFrame
impl Send for StreamedFrame
impl Sync for StreamedFrame
impl Unpin for StreamedFrame
impl UnwindSafe for StreamedFrame
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more