|
rogue
|
Stream frame FIFO. More...
#include <Fifo.h>
Public Member Functions | |
| Fifo (uint32_t maxDepth, uint32_t trimSize, bool noCopy) | |
| Constructs a FIFO stream buffer. | |
| ~Fifo () | |
| Destroys the FIFO and stops internal worker thread. | |
| std::size_t | size () |
| Returns current FIFO queue depth. | |
| std::size_t | dropCnt () const |
| Returns the total dropped-frame counter. | |
| void | clearCnt () |
| Clears FIFO counters (including dropped-frame count). | |
| void | acceptFrame (std::shared_ptr< rogue::interfaces::stream::Frame > frame) |
| Receives a frame from upstream and enqueues or drops it. | |
Public Member Functions inherited from rogue::interfaces::stream::Master | |
| Master () | |
| Constructs a stream master. | |
| virtual | ~Master () |
| Destroys the stream master. | |
| uint32_t | slaveCount () |
| Returns the number of attached slaves. | |
| void | addSlave (std::shared_ptr< rogue::interfaces::stream::Slave > slave) |
| Attaches a downstream slave. | |
| std::shared_ptr< rogue::interfaces::stream::Frame > | reqFrame (uint32_t size, bool zeroCopyEn) |
| Requests allocation of a new frame from the primary slave. | |
| void | sendFrame (std::shared_ptr< rogue::interfaces::stream::Frame > frame) |
| Sends a frame to all attached slaves. | |
| bool | ensureSingleBuffer (std::shared_ptr< rogue::interfaces::stream::Frame > &frame, bool reqEn) |
| Ensures a frame is represented by a single buffer. | |
| virtual void | stop () |
| Stops frame generation and shuts down associated threads. | |
| void | equalsPy (boost::python::object p) |
Supports == operator usage from Python. | |
| boost::python::object | rshiftPy (boost::python::object p) |
Supports >> operator usage from Python. | |
| void | operator== (std::shared_ptr< rogue::interfaces::stream::Slave > &other) |
Supports == operator usage in C++. | |
| std::shared_ptr< rogue::interfaces::stream::Slave > & | operator>> (std::shared_ptr< rogue::interfaces::stream::Slave > &other) |
| Connects this master to a slave via stream chaining operator. | |
Public Member Functions inherited from rogue::EnableSharedFromThis< rogue::interfaces::stream::Master > | |
| std::shared_ptr< rogue::interfaces::stream::Master > | shared_from_this () |
Returns a shared_ptr<T> for this instance. | |
Public Member Functions inherited from rogue::EnableSharedFromThisBase | |
| virtual | ~EnableSharedFromThisBase () |
| Virtual destructor for polymorphic base usage. | |
Public Member Functions inherited from rogue::interfaces::stream::Slave | |
| Slave () | |
| Constructs a stream slave. | |
| virtual | ~Slave () |
| Destroys the stream slave. | |
| virtual void | stop () |
| Shuts down threads associated with this object. | |
| void | setDebug (uint32_t debug, std::string name) |
| Sets debug message verbosity and logger name. | |
| uint64_t | getFrameCount () |
| Returns frame counter. | |
| uint64_t | getByteCount () |
| Returns byte counter. | |
| bool | ensureSingleBuffer (std::shared_ptr< rogue::interfaces::stream::Frame > &frame, bool reqEn) |
| Ensures frame is backed by a single buffer. | |
| std::shared_ptr< rogue::interfaces::stream::Frame > | reqLocalFrame (uint32_t size, bool zeroCopyEn) |
| Services a local frame allocation request through this object's pool interface. | |
| boost::python::object | lshiftPy (boost::python::object p) |
Supports << operator usage from Python. | |
| std::shared_ptr< rogue::interfaces::stream::Master > & | operator<< (std::shared_ptr< rogue::interfaces::stream::Master > &other) |
| Connects this slave to a master via stream chaining operator. | |
Public Member Functions inherited from rogue::interfaces::stream::Pool | |
| Pool () | |
| Constructs a pool with default allocation behavior enabled. | |
| virtual | ~Pool () |
| Destroys the pool and releases any cached buffer storage. | |
| uint32_t | getAllocBytes () |
| Returns total currently allocated bytes. | |
| uint32_t | getAllocCount () |
| Returns total currently allocated buffer count. | |
| virtual std::shared_ptr< rogue::interfaces::stream::Frame > | acceptReq (uint32_t size, bool zeroCopyEn) |
| Services a frame allocation request from a master. | |
| virtual void | retBuffer (uint8_t *data, uint32_t meta, uint32_t size) |
| Returns buffer data to the allocator. | |
| void | setFixedSize (uint32_t size) |
| Sets fixed-size mode. | |
| uint32_t | getFixedSize () |
| Returns fixed-size allocation setting. | |
| void | setPoolSize (uint32_t size) |
| Sets buffer pool size. | |
| uint32_t | getPoolSize () |
| Returns configured maximum number of cached pool entries. | |
Public Member Functions inherited from rogue::EnableSharedFromThis< rogue::interfaces::stream::Pool > | |
| std::shared_ptr< rogue::interfaces::stream::Pool > | shared_from_this () |
Returns a shared_ptr<T> for this instance. | |
Public Member Functions inherited from rogue::EnableSharedFromThis< rogue::interfaces::stream::Slave > | |
| std::shared_ptr< rogue::interfaces::stream::Slave > | shared_from_this () |
Returns a shared_ptr<T> for this instance. | |
Static Public Member Functions | |
| static std::shared_ptr< rogue::interfaces::stream::Fifo > | create (uint32_t maxDepth, uint32_t trimSize, bool noCopy) |
| Creates a FIFO stream buffer. | |
| static void | setup_python () |
| Registers this type with Python bindings. | |
Static Public Member Functions inherited from rogue::interfaces::stream::Master | |
| static std::shared_ptr< rogue::interfaces::stream::Master > | create () |
| Creates a stream master. | |
| static void | setup_python () |
| Registers this type with Python bindings. | |
Static Public Member Functions inherited from rogue::interfaces::stream::Slave | |
| static std::shared_ptr< rogue::interfaces::stream::Slave > | create () |
| Creates a new stream slave. | |
| static void | setup_python () |
| Registers this type with Python bindings. | |
Static Public Member Functions inherited from rogue::interfaces::stream::Pool | |
| static void | setup_python () |
| Registers this type with Python bindings. | |
Additional Inherited Members | |
Protected Member Functions inherited from rogue::interfaces::stream::Pool | |
| std::shared_ptr< rogue::interfaces::stream::Buffer > | allocBuffer (uint32_t size, uint32_t *total) |
| Allocate a buffer passed size. | |
| std::shared_ptr< rogue::interfaces::stream::Buffer > | createBuffer (void *data, uint32_t meta, uint32_t size, uint32_t alloc) |
| Creates a Buffer with a pre-allocated data block. | |
| void | decCounter (uint32_t alloc) |
| Decrements allocation counter. | |
Stream frame FIFO.
Buffers incoming frames and forwards them to downstream slaves from a worker thread. For each accepted frame:
noCopy is true, the original frame object is queued (no payload copy, no trim).noCopy is false, a new frame is allocated and payload bytes are copied.trimSize can cap copied payload length.Queue backpressure/drop behavior is controlled by maxDepth:
maxDepth > 0: once queue depth reaches maxDepth, new incoming frames are dropped.maxDepth == 0: no busy/drop threshold is applied by this FIFO (queue can continue growing).Trim behavior:
trimSize > 0 and noCopy == false: copied payload is limited to min(payload, trimSize).trimSize == 0: copied payload is not trimmed.noCopy == true: trimSize is ignored. | rogue::interfaces::stream::Fifo::Fifo | ( | uint32_t | maxDepth, |
| uint32_t | trimSize, | ||
| bool | noCopy | ||
| ) |
Constructs a FIFO stream buffer.
Creator with version constant.
This constructor is a low-level C++ allocation path. Prefer create() when shared ownership or Python exposure is required.
| maxDepth | Queue busy/drop threshold in frames. 0 disables threshold-based drops. |
| trimSize | Payload trim limit in copy mode. 0 disables trimming. |
| noCopy | Set to true to queue original frames; when true, trimSize is ignored. |
| rogue::interfaces::stream::Fifo::~Fifo | ( | ) |
|
virtual |
Receives a frame from upstream and enqueues or drops it.
Accept a frame from master.
| frame | Incoming frame. |
Reimplemented from rogue::interfaces::stream::Slave.
| void rogue::interfaces::stream::Fifo::clearCnt | ( | ) |
|
static |
Creates a FIFO stream buffer.
Class creation.
Parameter semantics are identical to the constructor; see Fifo() for queue-depth and trim behavior details.
Exposed as rogue.interfaces.stream.Fifo() in Python.
This static factory is the preferred construction path when the object is shared across Rogue graph connections or exposed to Python. It returns std::shared_ptr ownership compatible with Rogue pointer typedefs.
| maxDepth | Queue busy/drop threshold in frames. 0 disables threshold-based drops. |
| trimSize | Payload trim limit in copy mode. 0 disables trimming. |
| noCopy | Set to true to queue original frames; when true, trimSize is ignored. |
Description :
This file is part of the rogue software platform. It is subject to the license terms in the LICENSE.txt file found in the top-level directory of this distribution and at: https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. No part of the rogue software platform, including this file, may be copied, modified, propagated, or distributed except according to the terms
| std::size_t rogue::interfaces::stream::Fifo::dropCnt | ( | ) | const |
|
static |
| std::size_t rogue::interfaces::stream::Fifo::size | ( | ) |