#include <CAVERNdb_sharedState_c.hxx>
Inheritance diagram for CAVERNdb_sharedState_c::
Public Methods | |
CAVERNdb_sharedState_c () | |
Class constructor. | |
CAVERNdb_sharedState_c (CAVERNdb_client_c *dbclient, char *path, char *key) | |
virtual | ~CAVERNdb_sharedState_c () |
Class destructor. | |
bool | isSharingEnabled () |
Returns the sharing status of this state. | |
void | enableSharing () |
Sets the sharing enabled flag to TRUE. | |
void | disableSharing () |
Sets the sharing enabled flag to FALSE. | |
int | refresh () |
virtual void | update (CAVERNmisc_subject_c *subj) |
Protected Methods | |
virtual int | packAndSendState ()=0 |
virtual int | unpackState (char *data)=0 |
Protected Attributes | |
CAVERNnet_datapack_c | _packer |
data packing object. | |
CAVERNdb_client_c* | _dbclient |
pointer to a database client which will make the transmissions. | |
bool | _sharingEnabled |
flag for indicating whether or not sharing is enabled. | |
char* | _path |
path name in the database for storing this state. | |
char* | _key |
key name in the database for storing this state. |
Updates are handled through the user of the subject-observer pattern. The shared state observes the client, so when new data arrives, it will unpack the state information provided that sharing is enabled. Sharing is initially disabled for initialization purposes, but can be enabled and disabled later as required.
Subclasses of the shared state have the responsiblity of handling the format of the state for transmission. The state will need to be packed using the packer instance and then sent through the database client. This process is handled by each client because the packing will vary, and the send is dependent upon the size of the packed data. Unpacking state information, however, can be done with just the data itself.
|
Class constructor. Creating an instance of a shared state requires a reference to a database client which already exists. The state will be registered with the client as an observer. Additionally, path and key names are stored within the state for tranmitting and receiving state updates.
|
|
Packs the object state and transmits it to the database server. The state information must be packed into a data buffer and sent to the database server. The responsibility of packing the state AND sending are placed within this method, so subclasses must put the state information into the database themselves.
|
|
Requests a refresh of the data. This method requests the remote state information from the database. It may be useful to call after creating the state. |
|
Unpacks the object state from the data buffer. The state receives a data buffer from the client when an update has occurred, but the state information must be unpacked from that buffer. This virtual method must be implemented in any derived subclass to extract the appropriate information from the data buffer received from the client. It is highly advisable to check the data's path, key, and size for security.
|
|
This method is executed whenever a subject this observer is "watching" calls its notify() method. You can think of this as the equivalent of a callback function. This is a pure virtual function that should be implemented by classes that inherit from the observer.
Reimplemented from CAVERNmisc_observer_c. |