pub struct Buffer<T: Message = Any> {
pub input: InputPort<T>,
/* private fields */
}Expand description
A block that simply stores all messages it receives.
§Block Diagram
block-beta
columns 4
Source space:2 Buffer
Source-- "input" -->Buffer
classDef block height:48px,padding:8px;
classDef hidden visibility:none;
class Buffer block
class Source hidden
§Sequence Diagram
sequenceDiagram
autonumber
participant BlockA as Another block
participant Buffer.input as Buffer.input port
participant Buffer as Buffer block
BlockA-->>Buffer: Connect
loop Buffer process
BlockA->>Buffer: Message
Buffer->>Buffer: Store message
end
BlockA-->>Buffer: Disconnect
Buffer-->>Buffer.input: Close
§Examples
§Using the block in a system
System::build(|s| {
let stdin = s.read_stdin();
let buffer = s.buffer();
s.connect(&stdin.output, &buffer.input);
});§Running the block via the CLI
$ protoflow execute BufferFields§
§input: InputPort<T>The input message stream.
Implementations§
Trait Implementations§
Source§impl<T: Message> Block for Buffer<T>
impl<T: Message> Block for Buffer<T>
Source§fn execute(&mut self, _runtime: &dyn BlockRuntime) -> BlockResult
fn execute(&mut self, _runtime: &dyn BlockRuntime) -> BlockResult
Executes this block’s computation.
Source§fn prepare(&mut self, _runtime: &dyn BlockRuntime) -> Result<(), BlockError>
fn prepare(&mut self, _runtime: &dyn BlockRuntime) -> Result<(), BlockError>
Prepares this block for execution. Read more
Source§impl<T: Message> BlockDescriptor for Buffer<T>
impl<T: Message> BlockDescriptor for Buffer<T>
Source§fn inputs(&self) -> Vec<PortDescriptor>
fn inputs(&self) -> Vec<PortDescriptor>
A description of this block’s input ports.
Source§fn outputs(&self) -> Vec<PortDescriptor>
fn outputs(&self) -> Vec<PortDescriptor>
A description of this block’s output ports.
Source§fn parameters(&self) -> Vec<ParameterDescriptor>
fn parameters(&self) -> Vec<ParameterDescriptor>
A description of this block’s parameters.
Source§fn ports(&self) -> Vec<PortDescriptor>
fn ports(&self) -> Vec<PortDescriptor>
A description of this block’s I/O ports.
Source§impl<T: Message> MaybeLabeled for Buffer<T>
impl<T: Message> MaybeLabeled for Buffer<T>
Source§impl<T: Message> MaybeNamed for Buffer<T>
impl<T: Message> MaybeNamed for Buffer<T>
Source§impl<T: Message> StdioSystem for Buffer<T>
impl<T: Message> StdioSystem for Buffer<T>
fn build_system(config: StdioConfig) -> Result<System, StdioError>
Auto Trait Implementations§
impl<T> Freeze for Buffer<T>
impl<T = Any> !RefUnwindSafe for Buffer<T>
impl<T> Send for Buffer<T>
impl<T> Sync for Buffer<T>
impl<T> Unpin for Buffer<T>where
T: Unpin,
impl<T = Any> !UnwindSafe for Buffer<T>
Blanket Implementations§
Source§impl<T> AsBlockDescriptor for Twhere
T: BlockDescriptor,
impl<T> AsBlockDescriptor for Twhere
T: BlockDescriptor,
fn as_block_descriptor(&self) -> &dyn BlockDescriptor
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