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>
43 const N*
getNode()
const {
return _node; }
56 uint32_t
getPort()
const {
return _port; }
57 EQFABRIC_INL
void setPort(
const uint32_t port);
71 EQFABRIC_INL
void setDevice(
const uint32_t device);
87 void notifyPixelViewportChanged();
90 EQFABRIC_INL PipePath getPath()
const;
99 EQFABRIC_INL VisitorResult
accept(V& visitor);
102 EQFABRIC_INL VisitorResult
accept(V& visitor)
const;
114 IATTR_ALL = IATTR_LAST + 5
118 EQFABRIC_INL
void setIAttribute(
const IAttribute attr,
const int32_t value);
123 return _iAttributes[attr];
129 EQFABRIC_INL
static const std::string& getIAttributeString(
135 EQFABRIC_INL
virtual void backup();
136 EQFABRIC_INL
virtual void restore();
137 void create(W** window);
138 void release(W* window);
139 virtual void output(std::ostream&)
const {}
141 EQFABRIC_INL
virtual uint128_t commit(
142 const uint32_t incarnation = CO_COMMIT_NEXT);
147 explicit Pipe(N* parent);
148 EQFABRIC_INL
virtual ~
Pipe();
150 virtual void attach(
const uint128_t&
id,
151 const uint32_t instanceID);
153 EQFABRIC_INL
virtual void serialize(co::DataOStream& os,
154 const uint64_t dirtyBits);
156 EQFABRIC_INL
virtual void deserialize(co::DataIStream& is,
157 const uint64_t dirtyBits);
159 EQFABRIC_INL
virtual void notifyDetach();
162 EQFABRIC_INL
virtual void setDirty(
const uint64_t bits);
165 virtual ChangeType getChangeType()
const {
return UNBUFFERED; }
166 W* _findWindow(
const uint128_t&
id);
170 DIRTY_ATTRIBUTES = Object::DIRTY_CUSTOM << 0,
171 DIRTY_WINDOWS = Object::DIRTY_CUSTOM << 1,
172 DIRTY_PIXELVIEWPORT = Object::DIRTY_CUSTOM << 2,
173 DIRTY_MEMBER = Object::DIRTY_CUSTOM << 3,
174 DIRTY_PIPE_BITS = DIRTY_ATTRIBUTES | DIRTY_WINDOWS |
175 DIRTY_PIXELVIEWPORT | DIRTY_MEMBER | DIRTY_OBJECT_BITS
179 virtual uint64_t getRedistributableBits()
const {
return DIRTY_PIPE_BITS; }
188 int32_t _iAttributes[IATTR_ALL];
205 void _addWindow(W* window);
206 EQFABRIC_INL
bool _removeWindow(W* window);
207 template <
class,
class,
class,
class>
211 bool _mapNodeObjects() {
return _node->_mapNodeObjects(); }
212 typedef co::CommandFunc<Pipe<N, P, W, V>> CmdFunc;
213 bool _cmdNewWindow(co::ICommand& command);
214 bool _cmdNewWindowReply(co::ICommand& command);
217 template <
class N,
class P,
class W,
class V>
218 EQFABRIC_INL std::ostream& operator<<(std::ostream&, const Pipe<N, P, W, V>&);
222 #endif // EQFABRIC_PIPE_H 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.
DirtyBits
The changed parts of the object since the last pack().
uint32_t getPort() const
Returns the port number of this pipe.
Base data transport class for pipes.
std::vector< W * > Windows
A vector of pointers to windows.
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.
Base data transport class for windows.
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