Collage
1.5.0
High-performance C++ library for developing object-oriented distributed applications.
|
The consumer end of a distributed queue. More...
#include <queueSlave.h>
Public Member Functions | |
CO_API | QueueSlave (const uint32_t prefetchMark=LB_UNDEFINED_UINT32, const uint32_t prefetchAmount=LB_UNDEFINED_UINT32) |
Construct a new queue consumer. More... | |
virtual CO_API | ~QueueSlave () |
Destruct this queue consumer. More... | |
CO_API ObjectICommand | pop (const uint32_t timeout=LB_TIMEOUT_INDEFINITE) |
Dequeue an item. 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 uint128_t &identifier) |
Set the object's unique identifier. More... | |
CO_API const uint128_t & | 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... | |
virtual void | pack (DataOStream &os) |
Serialize the modifications since the last call to commit(). More... | |
virtual void | unpack (DataIStream &is) |
Deserialize a change. More... | |
CO_API ObjectOCommand | send (NodePtr node, const uint32_t cmd, const uint32_t instanceID=CO_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 (const Nodes &nodes) |
Public Member Functions inherited from co::Dispatcher | |
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 | |
ChangeType | getChangeType () const override |
void | getInstanceData (co::DataOStream &) override |
Serialize all instance information of this distributed object. More... | |
void | applyInstanceData (co::DataIStream &is) override |
Deserialize the instance data. More... | |
Protected Member Functions inherited from co::Object | |
CO_API | Object () |
Construct a new distributed object. More... | |
Object & | operator= (const Object &) |
NOP assignment operator. More... | |
CO_API | Object (const Object &) |
Copy construct a new, unattached object. 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... | |
The consumer end of a distributed queue.
One or more instances of this class are mapped to the identifier of the QueueMaster registered on another node.
Definition at line 39 of file queueSlave.h.
CO_API co::QueueSlave::QueueSlave | ( | const uint32_t | prefetchMark = LB_UNDEFINED_UINT32 , |
const uint32_t | prefetchAmount = LB_UNDEFINED_UINT32 |
||
) |
Construct a new queue consumer.
The implementation will prefetch items from the queue master to cache them locally. The prefetchMark determines when new items are requested, and the prefetchAmount how many items are fetched. Prefetching items hides the network latency by pipelining the network communication with the processing, but introduces some imbalance between queue slaves.
prefetchMark | the low-water mark for prefetching, or LB_UNDEFINED_UINT32 to use the Global default. |
prefetchAmount | the refill quantity when prefetching, or LB_UNDEFINED_UINT32 to use the Global default. |
|
virtual |
Destruct this queue consumer.
|
overrideprotectedvirtual |
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. |
Reimplemented from co::Object.
|
inlineoverrideprotectedvirtual |
Reimplemented from co::Object.
Definition at line 77 of file queueSlave.h.
References co::Object::STATIC.
|
inlineoverrideprotectedvirtual |
Serialize all instance information of this distributed object.
os | The output stream. |
Reimplemented from co::Object.
Definition at line 78 of file queueSlave.h.
CO_API ObjectICommand co::QueueSlave::pop | ( | const uint32_t | timeout = LB_TIMEOUT_INDEFINITE | ) |
Dequeue an item.
The returned item can deserialize additional data using the DataIStream operators.
timeout | An optional timeout for the operation. |