23 #include <eq/client/api.h>
24 #include <eq/client/types.h>
26 #include <eq/fabric/config.h>
27 #include <co/objectHandler.h>
31 namespace detail {
class Config; }
56 Node, ConfigVisitor >,
57 public co::ObjectHandler
83 EQ_API co::CommandQueue* getMainThreadQueue();
84 EQ_API co::CommandQueue* getCommandThreadQueue();
93 EQ_API GLStats::Data getStatistics()
const;
115 EQ_API int64_t
getTime()
const;
121 const Channel* findChannel(
const std::string& name )
const
122 {
return find< Channel >( name ); }
150 EQ_API
virtual bool init(
const uint128_t& initID );
166 EQ_API
virtual bool exit();
190 EQ_API
virtual void setLatency(
const uint32_t latency );
222 EQ_API
virtual bool mapObject( co::Object*
object,
const uint128_t&
id,
223 const uint128_t& version = co::VERSION_OLDEST );
227 EQ_API
virtual uint32_t
mapObjectNB( co::Object*
object,
const uint128_t&
id,
228 const uint128_t& version = co::VERSION_OLDEST );
231 EQ_API
virtual uint32_t
mapObjectNB( co::Object*
object,
233 const uint128_t& version,
234 co::NodePtr master );
237 EQ_API
virtual bool mapObjectSync(
const uint32_t requestID );
246 EQ_API
virtual void unmapObject( co::Object*
object );
254 EQ_API f_bool_t
syncObject( co::Object*
object, co::NodePtr master,
256 const uint32_t instanceID = CO_INSTANCE_ALL)
override;
277 EQ_API
virtual uint32_t
startFrame(
const uint128_t& frameID );
399 EQ_API EventOCommand
sendEvent(
const uint32_t type );
409 EQ_API EventOCommand
sendError(
const uint32_t type,
410 const uint128_t& originator,
411 const uint32_t error );
426 LB_TIMEOUT_INDEFINITE )
const;
466 void setupMessagePump(
Pipe* pipe );
469 void setupServerConnections(
const std::string& connectionData );
473 EQ_API
virtual void attach(
const uint128_t&
id,
474 const uint32_t instanceID );
476 EQ_API
virtual void notifyAttached();
477 EQ_API
virtual void notifyDetach();
479 EQ_API
virtual void changeLatency(
const uint32_t latency );
480 EQ_API
virtual bool mapViewObjects()
const;
483 detail::Config*
const _impl;
488 bool _needsLocalSync()
const;
491 bool _handleEvent(
const Event& event );
492 const ConfigEvent* _convertEvent( co::ObjectICommand command );
495 void _updateStatistics();
499 void _releaseObjects();
502 void _exitMessagePump();
505 bool _cmdSyncClock( co::ICommand& command );
506 bool _cmdCreateNode( co::ICommand& command );
507 bool _cmdDestroyNode( co::ICommand& command );
508 bool _cmdInitReply( co::ICommand& command );
509 bool _cmdExitReply( co::ICommand& command );
510 bool _cmdUpdateVersion( co::ICommand& command );
511 bool _cmdUpdateReply( co::ICommand& command );
512 bool _cmdReleaseFrameLocal( co::ICommand& command );
513 bool _cmdFrameFinish( co::ICommand& command );
514 bool _cmdSwapObject( co::ICommand& command );
518 #endif // EQ_CONFIG_H
virtual EQ_API bool mapObjectSync(const uint32_t requestID)
Finalize the mapping of a distributed object.
virtual EQ_API bool init(const uint128_t &initID)
Initialize this configuration.
A visitor to traverse configs and all children.
A channel represents a two-dimensional viewport within a Window.
EQ_API bool isRunning() const
void addStatistic(const uint32_t originator, const Statistic &stat)
Add an statistic event to the statistics overlay.
A configuration is a visualization session driven by an application.
Proxy object for the connection to an Equalizer server.
A canvas represents a logical 2D projection surface.
EQ_API EventICommand getNextEvent(const uint32_t timeout=LB_TIMEOUT_INDEFINITE) const
Get the next event.
virtual EQ_API uint32_t finishFrame()
Finish the rendering of a frame.
EQ_API EventOCommand sendError(const uint32_t type, const uint128_t &originator, const uint32_t error)
Send an error event to the application node.
EQ_API uint32_t getCurrentFrame() const
EQ_API uint32_t getFinishedFrame() const
virtual EQ_API bool exit()
Exit this configuration.
EQ_API const ConfigEvent * nextEvent()
Get the next event.
A Pipe represents a graphics card (GPU) on a Node.
EQ_API bool update()
Update the configuration.
A Node represents a single computer in the cluster.
EQ_API void stopFrames()
Asynchronously signal all channels to interrupt their rendering.
virtual EQ_API uint32_t startFrame(const uint128_t &frameID)
Request a new frame of rendering.
virtual EQ_API uint32_t mapObjectNB(co::Object *object, const uint128_t &id, const uint128_t &version=co::VERSION_OLDEST)
Start mapping a distributed object.
virtual EQ_API uint32_t finishAllFrames()
Finish rendering all pending frames.
EQ_API int64_t getTime() const
Get the current time in milliseconds.
EQ_API void releaseFrameLocal(const uint32_t frameNumber)
Release the local synchronization of the config for a frame.
EQ_API void sendEvent(ConfigEvent &event)
Send an (old) event to the application node.
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
A command specialization for config events.
MessagePump * getMessagePump()
An interface to process system messages or events.
EQ_API bool checkEvent() const
virtual EQ_API ~Config()
Destruct a config.
virtual EQ_API bool mapObject(co::Object *object, const uint128_t &id, const uint128_t &version=co::VERSION_OLDEST)
Map a distributed object.
lunchbox::RefPtr< Client > ClientPtr
A reference-counted pointer to an eq::Client.
EQ_API Config(ServerPtr parent)
Construct a new config.
A layout groups one or more View, logically belonging together.
EQ_API ClientPtr getClient()
EQ_API f_bool_t syncObject(co::Object *object, co::NodePtr master, const uint128_t &id, const uint32_t instanceID=CO_INSTANCE_ALL) override
Synchronize the local object with a remote object.
virtual EQ_API bool registerObject(co::Object *object)
Register a distributed object.
EQ_API co::NodePtr getApplicationNode()
An Observer looks at one or more views from a certain position (head matrix) with a given eye separat...
Base data class for a configuration.
virtual EQ_API void unmapObject(co::Object *object)
Unmap a mapped object.
Event structure to report window system and other events.
virtual EQ_API void setLatency(const uint32_t latency)
EQ_API void stopRunning()
Stop the config.
fabric::Config< Server, Config, Observer, Layout, Canvas, Node, ConfigVisitor > Super
base class
virtual EQ_API bool handleEvent(const ConfigEvent *event)
Handle one (old) config event.
virtual EQ_API void deregisterObject(co::Object *object)
Deregister a distributed object.
lunchbox::RefPtr< const Client > ConstClientPtr
A reference-counted pointer to a const eq::Client.
EQ_API const ConfigEvent * tryNextEvent()
Try to get the next event.
virtual EQ_API void handleEvents()
Handle all config events.