38 #include <boost/python.hpp>
39namespace bp = boost::python;
43ris::FifoPtr ris::Fifo::create(uint32_t maxDepth, uint32_t trimSize,
bool noCopy) {
44 ris::FifoPtr p = std::make_shared<ris::Fifo>(maxDepth, trimSize, noCopy);
49void ris::Fifo::setup_python() {
51 bp::class_<ris::Fifo, ris::FifoPtr, bp::bases<ris::Master, ris::Slave>, boost::noncopyable>(
53 bp::init<uint32_t, uint32_t, bool>())
61ris::Fifo::Fifo(uint32_t maxDepth, uint32_t trimSize,
bool noCopy)
70 thread_(new std::thread(&
ris::
Fifo::runThread, this)) {
75 pthread_setname_np(thread_->native_handle(),
"Fifo");
89std::size_t ris::Fifo::size() {
94std::size_t ris::Fifo::dropCnt()
const {
99void ris::Fifo::clearCnt() {
124 size = frame->getPayload();
125 if (trimSize_ != 0 && trimSize_ < size) size = trimSize_;
128 nFrame = reqFrame(size,
true);
129 nFrame->setPayload(size);
132 src = frame->begin();
133 dst = nFrame->begin();
137 nFrame->setError(frame->getError());
138 nFrame->setChannel(frame->getChannel());
139 nFrame->setFlags(frame->getFlags());
147void ris::Fifo::runThread() {
152 if ((frame = queue_.pop()) != NULL) sendFrame(frame);
RAII helper that releases the Python GIL for a scope.
Structured Rogue logging helper.
void setThold(uint32_t thold)
Sets busy-threshold depth used by busy().
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).
Random-access byte iterator across a Frame payload.
Stream slave endpoint and default frame pool.
std::shared_ptr< rogue::interfaces::stream::Fifo > FifoPtr
Shared pointer alias for Fifo.
static void copyFrame(rogue::interfaces::stream::FrameIterator &srcIter, uint32_t size, rogue::interfaces::stream::FrameIterator &dstIter)
Copies bytes between frame iterators.
std::shared_ptr< rogue::interfaces::stream::Frame > FramePtr
Shared pointer alias for Frame.
std::shared_ptr< rogue::interfaces::stream::FrameLock > FrameLockPtr
Shared pointer alias for FrameLock.