19 #ifndef EQFABRIC_PIPE_H
20 #define EQFABRIC_PIPE_H
22 #include <eq/fabric/object.h>
23 #include <eq/fabric/pixelViewport.h>
24 #include <eq/fabric/types.h>
31 template<
class N,
class P,
class W,
class V >
class Pipe :
public Object
42 const N*
getNode()
const {
return _node; }
57 uint32_t
getPort()
const {
return _port; }
59 EQFABRIC_INL
void setPort(
const uint32_t port );
74 EQFABRIC_INL
void setDevice(
const uint32_t device );
91 void notifyPixelViewportChanged();
94 EQFABRIC_INL PipePath getPath()
const;
103 EQFABRIC_INL VisitorResult
accept( V& visitor );
106 EQFABRIC_INL VisitorResult
accept( V& visitor )
const;
119 IATTR_ALL = IATTR_LAST + 5
123 EQFABRIC_INL
void setIAttribute(
const IAttribute attr,
124 const int32_t value );
128 {
return _iAttributes[attr]; }
131 bool isThreaded()
const
135 EQFABRIC_INL
static const std::string& getIAttributeString(
141 EQFABRIC_INL
virtual void backup();
142 EQFABRIC_INL
virtual void restore();
143 void create( W** window );
144 void release( W* window );
145 virtual void output( std::ostream& )
const {}
147 EQFABRIC_INL
virtual uint128_t commit(
const uint32_t incarnation =
153 explicit Pipe( N* parent );
154 EQFABRIC_INL
virtual ~Pipe( );
156 virtual void attach(
const uint128_t&
id,
157 const uint32_t instanceID );
159 EQFABRIC_INL
virtual void serialize( co::DataOStream& os,
160 const uint64_t dirtyBits );
162 EQFABRIC_INL
virtual void deserialize( co::DataIStream& is,
163 const uint64_t dirtyBits );
165 EQFABRIC_INL
virtual void notifyDetach();
168 EQFABRIC_INL
virtual void setDirty(
const uint64_t bits );
171 virtual ChangeType getChangeType()
const {
return UNBUFFERED; }
173 W* _findWindow(
const uint128_t&
id );
177 DIRTY_ATTRIBUTES = Object::DIRTY_CUSTOM << 0,
178 DIRTY_WINDOWS = Object::DIRTY_CUSTOM << 1,
179 DIRTY_PIXELVIEWPORT = Object::DIRTY_CUSTOM << 2,
180 DIRTY_MEMBER = Object::DIRTY_CUSTOM << 3,
182 DIRTY_ATTRIBUTES | DIRTY_WINDOWS | DIRTY_PIXELVIEWPORT |
183 DIRTY_MEMBER | DIRTY_OBJECT_BITS
187 virtual uint64_t getRedistributableBits()
const
188 {
return DIRTY_PIPE_BITS; }
198 int32_t _iAttributes[IATTR_ALL];
216 void _addWindow( W* window );
217 EQFABRIC_INL
bool _removeWindow( W* window );
218 template<
class,
class,
class,
class >
friend class Window;
221 bool _mapNodeObjects() {
return _node->_mapNodeObjects(); }
223 typedef co::CommandFunc< Pipe< N, P, W, V > > CmdFunc;
224 bool _cmdNewWindow( co::ICommand& command );
225 bool _cmdNewWindowReply( co::ICommand& command );
228 template<
class N,
class P,
class W,
class V > EQFABRIC_INL
229 std::ostream& operator << ( std::ostream&, const Pipe< N, P, W, V >& );
233 #endif // EQFABRIC_PIPE_H
IAttribute
Possible values for integer attributes.
std::vector< W * > Windows
A vector of pointers to windows.
IAttribute
Pipe attributes.
uint32_t getDevice() const
Returns the device number of this pipe.
const N * getNode() const
Bind render thread to subset of cores.
uint32_t getPort() const
Returns the port number of this pipe.
Base data transport class for pipes.
const PixelViewport & getPixelViewport() const
Execute tasks in separate thread (default)
EQFABRIC_INL void setPixelViewport(const PixelViewport &pvp)
Set the pipe's pixel viewport.
EQFABRIC_INL VisitorResult accept(V &visitor)
Perform a depth-first traversal of this pipe.
const Windows & getWindows() const
Internal base class for all distributed, inheritable Equalizer objects.
Holds a 2D pixel viewport with methods for manipulation.
int32_t getIAttribute(const IAttribute attr) const