Collage
1.0.1
Object-Oriented C++ Network Library
|
Base class for distributed, inheritable objects. More...
#include <serializable.h>
Public Member Functions | |
CO_API uint64_t | getDirty () const |
virtual CO_API bool | isDirty () const |
virtual CO_API bool | isDirty (const uint64_t dirtyBits) const |
virtual CO_API uint128_t | commit (const uint32_t incarnation=CO_COMMIT_NEXT) |
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... | |
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... | |
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 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 | attach (const UUID &id, const uint32_t instanceID) |
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 Types | |
enum | DirtyBits { DIRTY_NONE = 0, DIRTY_CUSTOM = 1, DIRTY_ALL = 0xFFFFFFFFFFFFFFFFull } |
The changed parts of the serializable since the last pack(). More... | |
Protected Member Functions | |
CO_API | Serializable () |
Construct a new Serializable. More... | |
CO_API | Serializable (const Serializable &) |
Construct an unmapped, unregistered copy of a serializable. More... | |
virtual CO_API | ~Serializable () |
Destruct the serializable. More... | |
virtual void | serialize (co::DataOStream &, const uint64_t) |
Worker for pack() and getInstanceData(). More... | |
virtual void | deserialize (co::DataIStream &, const uint64_t) |
Worker for unpack() and applyInstanceData(). More... | |
virtual CO_API void | setDirty (const uint64_t bits) |
Add dirty flags to mark data for distribution. More... | |
virtual CO_API void | unsetDirty (const uint64_t bits) |
Remove dirty flags to clear data from distribution. More... | |
virtual ChangeType | getChangeType () const |
virtual CO_API void | notifyAttached () |
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... | |
Friends | |
class | detail::Serializable |
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... | |
Base class for distributed, inheritable objects.
This class implements one usage pattern of Object, which allows subclassing and serialization of distributed Objects. The implementation hierarchy Serializable -> eq::fabric::Object -> eq::fabric::Frustum illustrates the usage of this class.
Definition at line 38 of file serializable.h.
|
protected |
The changed parts of the serializable since the last pack().
Subclasses should define their own bits, starting at DIRTY_CUSTOM.
Definition at line 98 of file serializable.h.
|
protected |
Construct a new Serializable.
|
protected |
Construct an unmapped, unregistered copy of a serializable.
|
protectedvirtual |
Destruct the serializable.
|
virtual |
|
inlineprotectedvirtual |
Worker for unpack() and applyInstanceData().
This function is called with the dirty bits send by the master instance. The dirty bits are received beforehand, and do not need to be deserialized by the overriding method.
Reimplemented in co::ObjectMap.
Definition at line 90 of file serializable.h.
|
inlineprotectedvirtual |
Reimplemented from co::Object.
Reimplemented in co::ObjectMap.
Definition at line 112 of file serializable.h.
References co::Object::DELTA.
CO_API uint64_t co::Serializable::getDirty | ( | ) | const |
|
virtual |
Reimplemented from co::Object.
Reimplemented in co::ObjectMap.
|
virtual |
|
protectedvirtual |
|
inlineprotectedvirtual |
Worker for pack() and getInstanceData().
Override this and deserialize() to distribute subclassed data.
This method is called with DIRTY_ALL from getInstanceData() and with the actual dirty bits from pack(), which also resets the dirty state afterwards. The dirty bits are transmitted beforehand, and do not need to be transmitted by the overriding method.
Reimplemented in co::ObjectMap.
Definition at line 78 of file serializable.h.
|
protectedvirtual |
Add dirty flags to mark data for distribution.
|
protectedvirtual |
Remove dirty flags to clear data from distribution.