Collage
1.0.1
Object-Oriented C++ Network Library
|
A networked, versioned barrier. More...
#include <barrier.h>
Public Member Functions | |
CO_API | Barrier (NodePtr master=0, const uint32_t height=0) |
Construct a new barrier. More... | |
virtual CO_API | ~Barrier () |
Destruct the barrier. More... | |
Data Access | |
After a change, the barrier should be committed and synced to the same version on all nodes entering the barrier. | |
CO_API void | setHeight (const uint32_t height) |
Set the number of participants in the barrier. More... | |
CO_API void | increase () |
Add one participant to the barrier. More... | |
CO_API uint32_t | getHeight () const |
Operations | |
CO_API void | enter (const uint32_t timeout=LB_TIMEOUT_INDEFINITE) |
Enter the barrier, blocks until the barrier has been reached. More... | |
Public Member Functions inherited from co::Object | |
virtual CO_API | ~Object () |
Destruct the distributed object. More... | |
CO_API bool | isAttached () const |
CO_API LocalNodePtr | getLocalNode () |
CO_API void | setID (const UUID &identifier) |
Set the object's unique identifier. More... | |
CO_API const UUID & | getID () const |
CO_API uint32_t | getInstanceID () const |
CO_API bool | isBuffered () const |
CO_API bool | isMaster () const |
virtual uint64_t | getMaxVersions () const |
Limit the number of queued versions on slave instances. More... | |
virtual CO_API uint32_t | chooseCompressor () const |
Return the compressor to be used for data transmission. More... | |
virtual bool | isDirty () const |
Return if this object needs a commit. More... | |
CO_API void | push (const uint128_t &groupID, const uint128_t &objectType, const Nodes &nodes) |
Push the instance data of the object to the given nodes. More... | |
virtual CO_API uint128_t | commit (const uint32_t incarnation=CO_COMMIT_NEXT) |
Commit a new version of this object. More... | |
CO_API void | setAutoObsolete (const uint32_t count) |
Automatically obsolete old versions. More... | |
CO_API uint32_t | getAutoObsolete () const |
virtual CO_API uint128_t | sync (const uint128_t &version=VERSION_HEAD) |
Sync to a given version. More... | |
CO_API uint128_t | getHeadVersion () const |
CO_API uint128_t | getVersion () const |
virtual CO_API void | notifyNewHeadVersion (const uint128_t &version) |
Notification that a new head version was received by a slave object. More... | |
virtual void | notifyNewVersion () |
Notification that a new version was received by a master object. More... | |
CO_API ObjectOCommand | send (NodePtr node, const uint32_t cmd, const uint32_t instanceID=EQ_INSTANCE_ALL) |
Send a command with optional data to object instance(s) on another node. More... | |
virtual void | notifyAttach () |
Notify that this object will be registered or mapped. More... | |
virtual void | notifyAttached () |
Notify that this object has been registered or mapped. More... | |
virtual CO_API void | notifyDetach () |
Notify that this object will be deregistered or unmapped. More... | |
virtual void | notifyDetached () |
Notify that this object has been deregistered or unmapped. More... | |
uint32_t | getMasterInstanceID () const |
NodePtr | getMasterNode () |
CO_API void | removeSlave (NodePtr node, const uint32_t instanceID) |
CO_API void | removeSlaves (NodePtr node) |
void | setMasterNode (NodePtr node) |
void | addInstanceDatas (const ObjectDataIStreamDeque &, const uint128_t &) |
void | setupChangeManager (const Object::ChangeType type, const bool master, LocalNodePtr localNode, const uint32_t masterInstanceID) |
virtual CO_API void | detach () |
void | transfer (Object *from) |
void | applyMapData (const uint128_t &version) |
void | sendInstanceData (Nodes &nodes) |
Public Member Functions inherited from co::Dispatcher | |
const Dispatcher & | operator= (const Dispatcher &) |
template<typename T > | |
void | registerCommand (const uint32_t command, const CommandFunc< T > &func, CommandQueue *queue) |
Register a command member function for a command. More... | |
virtual CO_API bool | dispatchCommand (ICommand &command) |
Dispatch a command from the receiver thread to the registered queue. More... | |
Protected Member Functions | |
virtual void | attach (const UUID &id, const uint32_t instanceID) |
virtual ChangeType | getChangeType () const |
virtual void | getInstanceData (DataOStream &os) |
Serialize all instance information of this distributed object. More... | |
virtual void | applyInstanceData (DataIStream &is) |
Deserialize the instance data. More... | |
virtual void | pack (DataOStream &os) |
Serialize the modifications since the last call to commit(). More... | |
virtual void | unpack (DataIStream &is) |
Deserialize a change. More... | |
Protected Member Functions inherited from co::Object | |
CO_API | Object () |
Construct a new distributed object. More... | |
CO_API | Object (const Object &) |
Copy construct a new, unattached object. More... | |
const Object & | operator= (const Object &) |
NOP assignment operator. More... | |
Protected Member Functions inherited from co::Dispatcher | |
CO_API | Dispatcher (const Dispatcher &from) |
CO_API bool | _cmdUnknown (ICommand &command) |
The default handler for handling commands. More... | |
Additional Inherited Members | |
Public Types inherited from co::Object | |
enum | ChangeType { NONE, STATIC, INSTANCE, DELTA, UNBUFFERED } |
Object change handling characteristics, see Programming Guide. More... | |
Public Types inherited from co::Dispatcher | |
typedef CommandFunc< Dispatcher > | Func |
The signature of the base Dispatcher callback. More... | |
CO_API co::Barrier::Barrier | ( | NodePtr | master = 0 , |
const uint32_t | height = 0 |
||
) |
Construct a new barrier.
Barriers are versioned, distributed objects. The process setting up the barrier does register it with its LocalNode. Processes entering the barrier will map an instance to their local node.
The master node will maintain the barrier state. It has to be reachable from all other nodes participating in the barrier. If no master node is given, the node to which the master instance is registered is used.
Note that the node of the object master, i.e., the instance which is registered, and the barrier's master node may be different.
|
virtual |
Destruct the barrier.
|
protectedvirtual |
Deserialize the instance data.
This method is called during object mapping to populate slave instances with the master object's data.
is | the input stream. |
Implements co::Object.
CO_API void co::Barrier::enter | ( | const uint32_t | timeout = LB_TIMEOUT_INDEFINITE | ) |
Enter the barrier, blocks until the barrier has been reached.
The implementation currently assumes that the master node instance also enters the barrier. If a timeout happens a timeout exception is thrown.
|
inlineprotectedvirtual |
Reimplemented from co::Object.
Definition at line 91 of file barrier.h.
References co::Object::DELTA.
CO_API uint32_t co::Barrier::getHeight | ( | ) | const |
|
protectedvirtual |
Serialize all instance information of this distributed object.
os | The output stream. |
Implements co::Object.
CO_API void co::Barrier::increase | ( | ) |
Add one participant to the barrier.
|
protectedvirtual |
Serialize the modifications since the last call to commit().
No new version will be created if no data is written to the output stream.
os | the output stream. |
Reimplemented from co::Object.
CO_API void co::Barrier::setHeight | ( | const uint32_t | height | ) |
Set the number of participants in the barrier.
|
protectedvirtual |