Struct Buffer

Source
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 Buffer

Fields§

§input: InputPort<T>

The input message stream.

Implementations§

Source§

impl<T: Message> Buffer<T>

Source

pub fn new(input: InputPort<T>) -> Self

Source

pub fn messages(&self) -> &VecDeque<T>

Source§

impl<T: Message + 'static> Buffer<T>

Source

pub fn with_system(system: &System) -> Self

Trait Implementations§

Source§

impl<T: Message> Block for Buffer<T>

Source§

fn execute(&mut self, _runtime: &dyn BlockRuntime) -> BlockResult

Executes this block’s computation.
Source§

fn prepare(&mut self, _runtime: &dyn BlockRuntime) -> Result<(), BlockError>

Prepares this block for execution. Read more
Source§

impl<T: Message> BlockDescriptor for Buffer<T>

Source§

fn inputs(&self) -> Vec<PortDescriptor>

A description of this block’s input ports.
Source§

fn outputs(&self) -> Vec<PortDescriptor>

A description of this block’s output ports.
Source§

fn parameters(&self) -> Vec<ParameterDescriptor>

A description of this block’s parameters.
Source§

fn ports(&self) -> Vec<PortDescriptor>

A description of this block’s I/O ports.
Source§

impl<T: Clone + Message> Clone for Buffer<T>

Source§

fn clone(&self) -> Buffer<T>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Message> MaybeLabeled for Buffer<T>

Source§

fn label(&self) -> Option<Cow<'_, str>>

Returns the human-readable label, if any, of the object.
Source§

fn is_labeled(&self) -> bool

Checks whether the object has a human-readable label.
Source§

impl<T: Message> MaybeNamed for Buffer<T>

Source§

fn name(&self) -> Option<Cow<'_, str>>

Returns the name, if any, of the object.
Source§

fn is_named(&self) -> bool

Checks whether the object has a name.
Source§

impl<T: Message> StdioSystem for Buffer<T>

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsBlock for T
where T: Block,

Source§

fn as_block(&self) -> &dyn Block

Source§

impl<T> AsBlockDescriptor for T
where T: BlockDescriptor,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V