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;
118 IATTR_ALL = IATTR_LAST + 5
122 EQFABRIC_INL
void setIAttribute(
const IAttribute attr,
123 const int32_t value );
127 {
return _iAttributes[attr]; }
130 bool isThreaded()
const
134 EQFABRIC_INL
static const std::string& getIAttributeString(
140 EQFABRIC_INL
virtual void backup();
141 EQFABRIC_INL
virtual void restore();
142 void create( W** window );
143 void release( W* window );
144 virtual void output( std::ostream& )
const {}
146 EQFABRIC_INL
virtual uint128_t commit(
const uint32_t incarnation =
152 explicit Pipe( N* parent );
153 EQFABRIC_INL
virtual ~Pipe( );
155 virtual void attach(
const uint128_t&
id,
156 const uint32_t instanceID );
158 EQFABRIC_INL
virtual void serialize( co::DataOStream& os,
159 const uint64_t dirtyBits );
161 EQFABRIC_INL
virtual void deserialize( co::DataIStream& is,
162 const uint64_t dirtyBits );
164 EQFABRIC_INL
virtual void notifyDetach();
167 EQFABRIC_INL
virtual void setDirty(
const uint64_t bits );
170 virtual ChangeType getChangeType()
const {
return UNBUFFERED; }
172 W* _findWindow(
const uint128_t&
id );
176 DIRTY_ATTRIBUTES = Object::DIRTY_CUSTOM << 0,
177 DIRTY_WINDOWS = Object::DIRTY_CUSTOM << 1,
178 DIRTY_PIXELVIEWPORT = Object::DIRTY_CUSTOM << 2,
179 DIRTY_MEMBER = Object::DIRTY_CUSTOM << 3,
181 DIRTY_ATTRIBUTES | DIRTY_WINDOWS | DIRTY_PIXELVIEWPORT |
182 DIRTY_MEMBER | DIRTY_OBJECT_BITS
186 virtual uint64_t getRedistributableBits()
const
187 {
return DIRTY_PIPE_BITS; }
197 int32_t _iAttributes[IATTR_ALL];
215 void _addWindow( W* window );
216 EQFABRIC_INL
bool _removeWindow( W* window );
217 template<
class,
class,
class,
class >
friend class Window;
220 bool _mapNodeObjects() {
return _node->_mapNodeObjects(); }
222 typedef co::CommandFunc< Pipe< N, P, W, V > > CmdFunc;
223 bool _cmdNewWindow( co::ICommand& command );
224 bool _cmdNewWindowReply( co::ICommand& command );
227 template<
class N,
class P,
class W,
class V > EQFABRIC_INL
228 std::ostream& operator << ( std::ostream&, const Pipe< N, P, W, V >& );
232 #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)
The Equalizer client library.
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