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 Canvas, 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;
116 EQ_API int64_t
getTime()
const;
122 const Channel* findChannel(
const std::string& name )
const
123 {
return find< Channel >( name ); }
151 EQ_API
virtual bool init(
const uint128_t& initID );
169 EQ_API
virtual bool exit();
194 EQ_API
virtual void setLatency(
const uint32_t latency );
226 EQ_API
virtual bool mapObject( co::Object*
object,
const UUID&
id,
227 const uint128_t& version = co::VERSION_OLDEST );
231 EQ_API
virtual uint32_t
mapObjectNB( co::Object*
object,
const UUID&
id,
232 const uint128_t& version = co::VERSION_OLDEST );
238 EQ_API
virtual uint32_t
mapObjectNB( co::Object*
object,
const UUID&
id,
239 const uint128_t& version, co::NodePtr master );
242 EQ_API
virtual bool mapObjectSync(
const uint32_t requestID );
251 EQ_API
virtual void unmapObject( co::Object*
object );
276 EQ_API
virtual uint32_t
startFrame(
const uint128_t& frameID );
399 EQ_API EventOCommand
sendEvent(
const uint32_t type );
415 LB_TIMEOUT_INDEFINITE )
const;
455 void setupMessagePump(
Pipe* pipe );
458 void setupServerConnections(
const std::string& connectionData );
462 EQ_API
virtual void attach(
const UUID&
id,
463 const uint32_t instanceID );
465 EQ_API
virtual void notifyAttached();
466 EQ_API
virtual void notifyDetach();
468 EQ_API
virtual void changeLatency(
const uint32_t latency );
469 EQ_API
virtual bool mapViewObjects()
const;
472 detail::Config*
const _impl;
477 bool _needsLocalSync()
const;
480 bool _handleEvent(
const Event& event );
481 const ConfigEvent* _convertEvent( co::ObjectICommand command );
487 void _updateStatistics(
const uint32_t finishedFrame );
491 void _releaseObjects();
494 void _exitMessagePump();
497 bool _cmdSyncClock( co::ICommand& command );
498 bool _cmdCreateNode( co::ICommand& command );
499 bool _cmdDestroyNode( co::ICommand& command );
500 bool _cmdInitReply( co::ICommand& command );
501 bool _cmdExitReply( co::ICommand& command );
502 bool _cmdUpdateVersion( co::ICommand& command );
503 bool _cmdUpdateReply( co::ICommand& command );
504 bool _cmdReleaseFrameLocal( co::ICommand& command );
505 bool _cmdFrameFinish( co::ICommand& command );
506 bool _cmdSwapObject( co::ICommand& command );
510 #endif // EQ_CONFIG_H
A configuration is a visualization session driven by an application.
Event structure to report window system and other events.
Config(ServerPtr parent)
Construct a new config.
virtual uint32_t finishAllFrames()
Finish rendering all pending frames.
A command specialization for config events.
A channel represents a two-dimensional viewport within a Window.
virtual bool init(const uint128_t &initID)
Initialize this configuration.
A visitor to traverse configs and all children.
int64_t getTime() const
Get the current time in milliseconds.
virtual void setLatency(const uint32_t latency)
A layout groups one or more View, logically belonging together.
co::NodePtr getApplicationNode()
virtual void handleEvents()
Handle all config events.
A canvas represents a logical 2D projection surface.
virtual void unmapObject(co::Object *object)
Unmap a mapped object.
A Node represents a single computer in the cluster.
const ConfigEvent * nextEvent()
Get the next event.
void stopFrames()
Asynchronously signal all channels to interrupt their rendering.
A Pipe represents a graphics card (GPU) on a Node.
Proxy object for the connection to an Equalizer server.
void releaseObject(co::Object *object)
Convenience method to deregister or unmap an object.
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
virtual void deregisterObject(co::Object *object)
Deregister a distributed object.
virtual uint32_t mapObjectNB(co::Object *object, const UUID &id, const uint128_t &version=co::VERSION_OLDEST)
Start mapping a distributed object.
virtual bool handleEvent(const ConfigEvent *event)
Handle one (old) config event.
void sendEvent(ConfigEvent &event)
Send an (old) event to the application node.
virtual bool mapObject(co::Object *object, const UUID &id, const uint128_t &version=co::VERSION_OLDEST)
Map a distributed object.
virtual uint32_t startFrame(const uint128_t &frameID)
Request a new frame of rendering.
void addStatistic(const uint32_t originator, const Statistic &stat)
Add an statistic event to the statistics overlay.
virtual uint32_t finishFrame()
Finish the rendering of a frame.
const ConfigEvent * tryNextEvent()
Try to get the next event.
EventICommand getNextEvent(const uint32_t timeout=LB_TIMEOUT_INDEFINITE) const
Get the next event.
uint32_t getFinishedFrame() const
fabric::Config< Server, Config, Observer, Layout, Canvas, Node, ConfigVisitor > Super
base class
lunchbox::RefPtr< Client > ClientPtr
A reference-counted pointer to an eq::Client.
An Observer looks at one or more views from a certain position (head matrix) with a given eye separat...
void releaseFrameLocal(const uint32_t frameNumber)
Release the local synchronization of the config for a frame.
virtual bool registerObject(co::Object *object)
Register a distributed object.
Base data class for a configuration.
bool update()
Update the configuration.
An interface to process system messages or events.
virtual bool exit()
Exit this configuration.
virtual bool mapObjectSync(const uint32_t requestID)
Finalize the mapping of a distributed object.
virtual ~Config()
Destruct a config.
uint32_t getCurrentFrame() const
void stopRunning()
Stop the config.
MessagePump * getMessagePump()
lunchbox::RefPtr< const Client > ConstClientPtr
A reference-counted pointer to a const eq::Client.