17#ifndef __ROGUE_INTERFACES_STREAM_MASTER_H__
18#define __ROGUE_INTERFACES_STREAM_MASTER_H__
33 #include <boost/python.hpp>
67 std::vector<std::shared_ptr<rogue::interfaces::stream::Slave> > slaves_;
73 std::shared_ptr<rogue::interfaces::stream::Slave> defSlave_;
87 static std::shared_ptr<rogue::interfaces::stream::Master>
create();
123 void addSlave(std::shared_ptr<rogue::interfaces::stream::Slave> slave);
141 std::shared_ptr<rogue::interfaces::stream::Frame>
reqFrame(uint32_t size,
bool zeroCopyEn);
156 void sendFrame(std::shared_ptr<rogue::interfaces::stream::Frame> frame);
174 bool ensureSingleBuffer(std::shared_ptr<rogue::interfaces::stream::Frame>& frame,
bool reqEn);
194 void equalsPy(boost::python::object p);
201 boost::python::object
rshiftPy(boost::python::object p);
209 void operator==(std::shared_ptr<rogue::interfaces::stream::Slave>& other);
216 std::shared_ptr<rogue::interfaces::stream::Slave>&
operator>>(
217 std::shared_ptr<rogue::interfaces::stream::Slave>& other);
221typedef std::shared_ptr<rogue::interfaces::stream::Master>
MasterPtr;
Typed shared-from-this helper for Rogue classes.
virtual void stop()
Stops frame generation and shuts down associated threads.
std::shared_ptr< rogue::interfaces::stream::Frame > reqFrame(uint32_t size, bool zeroCopyEn)
Requests allocation of a new frame from the primary slave.
virtual ~Master()
Destroys the stream master.
void addSlave(std::shared_ptr< rogue::interfaces::stream::Slave > slave)
Attaches a downstream slave.
uint32_t slaveCount()
Returns the number of attached slaves.
void operator==(std::shared_ptr< rogue::interfaces::stream::Slave > &other)
Supports == operator usage in C++.
bool ensureSingleBuffer(std::shared_ptr< rogue::interfaces::stream::Frame > &frame, bool reqEn)
Ensures a frame is represented by a single buffer.
void equalsPy(boost::python::object p)
Supports == operator usage from Python.
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.
boost::python::object rshiftPy(boost::python::object p)
Supports >> operator usage from Python.
static void setup_python()
Registers this type with Python bindings.
void sendFrame(std::shared_ptr< rogue::interfaces::stream::Frame > frame)
Sends a frame to all attached slaves.
Master()
Constructs a stream master.
static std::shared_ptr< rogue::interfaces::stream::Master > create()
Creates a stream master.
std::shared_ptr< rogue::interfaces::stream::Master > MasterPtr
Shared pointer alias for Master.