A Node represents a single computer in the cluster. More...
#include <node.h>


Classes | |
| class | TransmitThread |
Public Member Functions | |
| Node (Config *parent) | |
| Constructs a new node. | |
| virtual | ~Node () |
| Destructs the node. | |
| Config * | getConfig () |
| Returns the config of this node. | |
| const Config * | getConfig () const |
| ClientPtr | getClient () |
| ServerPtr | getServer () |
| const PipeVector & | getPipes () const |
| const std::string & | getName () const |
| uint32_t | getTasks () const |
| Return the set of tasks this nodes's channels might execute in the worst case. | |
| CommandQueue * | getNodeThreadQueue () |
| VisitorResult | accept (NodeVisitor &visitor) |
| Traverse this node and all children using a node visitor. | |
| VisitorResult | accept (NodeVisitor &visitor) const |
| Const-version of accept(). | |
| net::Barrier * | getBarrier (const net::ObjectVersion barrier) |
| Get a network barrier. | |
| FrameData * | getFrameData (const net::ObjectVersion &dataVersion) |
| Get a frame data instance. | |
| void | waitInitialized () const |
| Wait for the node to be initialized. | |
| bool | isRunning () const |
| void | waitFrameStarted (const uint32_t frameNumber) const |
| Wait for a frame to be started. | |
| uint32_t | getFinishedFrame () const |
Public Attributes | |
| TransmitThread | transmitter |
| char | dummy [64] |
Protected Member Functions | |
| virtual void | attachToSession (const uint32_t id, const uint32_t instanceID, net::Session *session) |
| Called when object is attached to session. | |
Actions | |
| void | startFrame (const uint32_t frameNumber) |
| Start a frame by unlocking all child resources. | |
| void | releaseFrame (const uint32_t frameNumber) |
| Signal the completion of a frame to the parent. | |
| void | releaseFrameLocal (const uint32_t frameNumber) |
| Release the local synchronization of the parent for a frame. | |
Callbacks | |
| virtual bool | configInit (const uint32_t initID) |
| Initialises this node. | |
| virtual bool | configExit () |
| Exit this node. | |
| virtual void | frameStart (const uint32_t frameID, const uint32_t frameNumber) |
| Start rendering a frame. | |
| virtual void | frameFinish (const uint32_t frameID, const uint32_t frameNumber) |
| Finish rendering a frame. | |
| virtual void | frameDrawFinish (const uint32_t frameID, const uint32_t frameNumber) |
| Finish drawing. | |
| virtual void | frameTasksFinish (const uint32_t frameID, const uint32_t frameNumber) |
| Finish all rendering tasks. | |
Error information. | |
| void | setErrorMessage (const std::string &message) |
| Set a message why the last operation failed. | |
Friends | |
| class | Config |
| class | Pipe |
Attributes | |
|
| |
| enum | IAttribute { IATTR_THREAD_MODEL, IATTR_LAUNCH_TIMEOUT, IATTR_FILL1, IATTR_FILL2, IATTR_ALL } |
Node attributes. More... | |
| void | setIAttribute (const IAttribute attr, const int32_t value) |
| int32_t | getIAttribute (const IAttribute attr) const |
| static const std::string & | getIAttributeString (const IAttribute attr) |
A Node represents a single computer in the cluster.
Each node is executed in a seperate process.
Definition at line 39 of file lib/client/node.h.
| enum eq::Node::IAttribute |
Node attributes.
Definition at line 125 of file lib/client/node.h.
| eq::Node::Node | ( | Config * | parent | ) |
Constructs a new node.
Reimplemented in eqNbody::Node, eqPly::Node, and eVolve::Node.
Definition at line 60 of file lib/client/node.cpp.
References EQINFO.
| eq::Node::~Node | ( | ) | [virtual] |
Destructs the node.
Reimplemented in eqNbody::Node, eqPly::Node, and eVolve::Node.
Definition at line 72 of file lib/client/node.cpp.
References EQINFO.
| Config* eq::Node::getConfig | ( | ) | [inline] |
Returns the config of this node.
Definition at line 53 of file lib/client/node.h.
Referenced by eqPly::Node::configExit(), eqNbody::Node::configExit(), eVolve::Node::configInit(), eqPly::Node::configInit(), eqNbody::Node::configInit(), and releaseFrameLocal().

| uint32_t eq::Node::getTasks | ( | ) | const [inline] |
Return the set of tasks this nodes's channels might execute in the worst case.
It is not guaranteed that all the tasks will be actually executed during rendering.
Definition at line 72 of file lib/client/node.h.
| VisitorResult eq::Node::accept | ( | NodeVisitor & | visitor | ) |
Traverse this node and all children using a node visitor.
| visitor | the visitor. |
Definition at line 167 of file lib/client/node.cpp.
| VisitorResult eq::Node::accept | ( | NodeVisitor & | visitor | ) | const |
Const-version of accept().
Definition at line 172 of file lib/client/node.cpp.
| net::Barrier * eq::Node::getBarrier | ( | const net::ObjectVersion | barrier | ) |
Get a network barrier.
| barrier | the barrier identifier and version. |
For internal use only.
Definition at line 203 of file lib/client/node.cpp.
References eq::net::Object::getSession(), eq::net::Object::makeThreadSafe(), eq::net::Session::mapObject(), eq::base::Lock::set(), eq::net::Object::sync(), and eq::base::Lock::unset().

| FrameData * eq::Node::getFrameData | ( | const net::ObjectVersion & | dataVersion | ) |
Get a frame data instance.
| dataVersion | the frame data identifier and version. |
For internal use only.
Definition at line 224 of file lib/client/node.cpp.
References eq::net::Object::getSession(), eq::net::Object::getVersion(), eq::net::Object::makeThreadSafe(), eq::net::Session::mapObject(), eq::base::Lock::set(), eq::net::Object::sync(), eq::base::Lock::unset(), and eq::FrameData::update().
Referenced by eq::Pipe::getFrame().


| void eq::Node::waitInitialized | ( | ) | const |
Wait for the node to be initialized.
Definition at line 251 of file lib/client/node.cpp.
References eq::base::Monitor< T >::waitGE().

| void eq::Node::waitFrameStarted | ( | const uint32_t | frameNumber | ) | const |
Wait for a frame to be started.
| frameNumber | the frame number. |
Definition at line 285 of file lib/client/node.cpp.
References eq::base::Monitor< T >::waitGE().
Referenced by eq::Pipe::frameStart().


| void eq::Node::attachToSession | ( | const uint32_t | id, | |
| const uint32_t | instanceID, | |||
| net::Session * | session | |||
| ) | [protected, virtual] |
Called when object is attached to session.
For internal use only.
Reimplemented from eq::net::Object.
Definition at line 79 of file lib/client/node.cpp.
References eq::Config::getNodeThreadQueue(), and eq::net::Dispatcher::registerCommand().

| void eq::Node::startFrame | ( | const uint32_t | frameNumber | ) | [protected] |
Start a frame by unlocking all child resources.
| frameNumber | the frame to start. |
Definition at line 290 of file lib/client/node.cpp.
Referenced by frameStart().

| void eq::Node::releaseFrame | ( | const uint32_t | frameNumber | ) | [protected] |
Signal the completion of a frame to the parent.
| frameNumber | the frame to end. |
Definition at line 327 of file lib/client/node.cpp.
References eq::base::RefPtr< T >::get(), eq::Config::getServer(), and eq::net::Object::send().
Referenced by frameFinish().


| void eq::Node::releaseFrameLocal | ( | const uint32_t | frameNumber | ) | [protected] |
Release the local synchronization of the parent for a frame.
| frameNumber | the frame to release. |
Definition at line 344 of file lib/client/node.cpp.
References EQLOG, getConfig(), eq::Config::getNodes(), eq::LOG_TASKS, and eq::Config::releaseFrameLocal().
Referenced by frameDrawFinish(), frameStart(), and frameTasksFinish().


| bool eq::Node::configInit | ( | const uint32_t | initID | ) | [protected, virtual] |
Initialises this node.
| initID | the init identifier. |
Reimplemented in eqNbody::Node, eqPly::Node, and eVolve::Node.
Definition at line 261 of file lib/client/node.cpp.
References eq::AGLEventHandler::initMagellan().
Referenced by eVolve::Node::configInit(), eqPly::Node::configInit(), and eqNbody::Node::configInit().


| void eq::Node::frameStart | ( | const uint32_t | frameID, | |
| const uint32_t | frameNumber | |||
| ) | [protected, virtual] |
Start rendering a frame.
Called once at the beginning of each frame, to start the node's frame and to do per-frame updates of node-specific data. This method has to call startFrame(). Immediately releases local synchronization if the thread model is async.
| frameID | the per-frame identifier. | |
| frameNumber | the frame to start. |
Definition at line 357 of file lib/client/node.cpp.
References eq::ASYNC, eq::DRAW_SYNC, IATTR_THREAD_MODEL, eq::LOCAL_SYNC, releaseFrameLocal(), and startFrame().

| virtual void eq::Node::frameFinish | ( | const uint32_t | frameID, | |
| const uint32_t | frameNumber | |||
| ) | [inline, protected, virtual] |
Finish rendering a frame.
Called once at the end of each frame, to end the frame and to do per-frame updates of node-specific data. This method has to call releaseFrame().
| frameID | the per-frame identifier. | |
| frameNumber | the frame to finish. |
Definition at line 248 of file lib/client/node.h.
References releaseFrame().

| void eq::Node::frameDrawFinish | ( | const uint32_t | frameID, | |
| const uint32_t | frameNumber | |||
| ) | [protected, virtual] |
Finish drawing.
Called once per frame after the last draw operation. Waits for the pipes to release the local synchonization and releases the node's local synchronization if the thread model is draw_sync (the default).
| frameID | the per-frame identifier. | |
| frameNumber | the frame finished with draw. |
Definition at line 377 of file lib/client/node.cpp.
References eq::ASYNC, eq::DRAW_SYNC, eq::Pipe::getTasks(), IATTR_THREAD_MODEL, eq::LOCAL_SYNC, releaseFrameLocal(), eq::TASK_DRAW, and eq::Pipe::waitFrameLocal().

| void eq::Node::frameTasksFinish | ( | const uint32_t | frameID, | |
| const uint32_t | frameNumber | |||
| ) | [protected, virtual] |
Finish all rendering tasks.
Called once per frame after all frame tasks. Waits for the pipes to release the local synchonization and releases the node's local synchronization if the thread model is local_sync.
Note that frameFinish is called after the latency is exhausted and synchronizes pipe thread execution.
| frameID | the per-frame identifier. | |
| frameNumber | the frame finished with draw. |
Definition at line 402 of file lib/client/node.cpp.
References eq::ASYNC, eq::DRAW_SYNC, eq::Pipe::getTasks(), IATTR_THREAD_MODEL, eq::LOCAL_SYNC, releaseFrameLocal(), and eq::Pipe::waitFrameLocal().

| void eq::Node::setErrorMessage | ( | const std::string & | message | ) | [protected] |
Set a message why the last operation failed.
The message will be transmitted to the originator of the request, for example to Config::init when set from within the init method.
| message | the error message. |
Definition at line 427 of file lib/client/node.cpp.
0.9.1 by
1.6.1