pub struct StreamRecording { /* private fields */ }Expand description
A fully captured stream: its metadata plus every packet it produced.
A recording is the materialized, replayable form of a finished stream. It is
produced by draining a Stream to done and can be replayed any number
of times, seeked into, or serialized to a transport cassette.
§Examples
use sim_kernel::{Expr, Symbol};
use sim_lib_stream_core::{
BufferOverflowPolicy, BufferPolicy, StreamDirection, StreamItem, StreamMedia,
StreamMetadata, StreamPacket,
};
use sim_lib_stream_combinators::{record_bang, Stream};
let metadata = StreamMetadata::new(
Symbol::qualified("stream", "doc"),
StreamMedia::Data,
StreamDirection::Source,
Symbol::qualified("clock", "doc"),
BufferPolicy::bounded_with_overflow(8, BufferOverflowPolicy::DropNewest).unwrap(),
);
let item = StreamItem::new(StreamPacket::data(
Symbol::qualified("stream/data", "model-event"),
Expr::Nil,
));
let stream = Stream::pull(metadata, vec![item.clone()]);
let recording = record_bang(&stream).unwrap();
assert_eq!(recording.len(), 1);
assert_eq!(recording.replay().take_packets(8).unwrap(), vec![item]);Implementations§
Source§impl StreamRecording
impl StreamRecording
Sourcepub fn new(metadata: StreamMetadata, items: Vec<StreamItem>) -> Self
pub fn new(metadata: StreamMetadata, items: Vec<StreamItem>) -> Self
Builds a recording from explicit metadata and captured packets.
Sourcepub fn metadata(&self) -> &StreamMetadata
pub fn metadata(&self) -> &StreamMetadata
Returns the metadata of the recorded stream.
Sourcepub fn items(&self) -> &[StreamItem]
pub fn items(&self) -> &[StreamItem]
Returns the captured packets in their recorded order.
Sourcepub fn seek(&self, target: SeekTarget) -> Stream
pub fn seek(&self, target: SeekTarget) -> Stream
Replays the recording from the first packet matching target.
Sourcepub fn cassette(&self, profile: TransportProfile) -> Result<StreamCassette>
pub fn cassette(&self, profile: TransportProfile) -> Result<StreamCassette>
Serializes the recording into a transport cassette for profile.
Trait Implementations§
Source§impl Clone for StreamRecording
impl Clone for StreamRecording
Source§fn clone(&self) -> StreamRecording
fn clone(&self) -> StreamRecording
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for StreamRecording
impl Debug for StreamRecording
impl Eq for StreamRecording
Source§impl PartialEq for StreamRecording
impl PartialEq for StreamRecording
Source§fn eq(&self, other: &StreamRecording) -> bool
fn eq(&self, other: &StreamRecording) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for StreamRecording
Auto Trait Implementations§
impl Freeze for StreamRecording
impl RefUnwindSafe for StreamRecording
impl Send for StreamRecording
impl Sync for StreamRecording
impl Unpin for StreamRecording
impl UnsafeUnpin for StreamRecording
impl UnwindSafe for StreamRecording
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