ZG  "1.00
 All Classes Namespaces Files Functions Variables Enumerator Friends Macros Pages
ZGDatabasePeerSession.h
Go to the documentation of this file.
1 #ifndef ZGDatabasePeerSession_h
2 #define ZGDatabasePeerSession_h
3 
4 #include "zg/ZGPeerSession.h"
5 #include "zg/IDatabaseObject.h"
6 
7 namespace zg
8 {
9 
15 {
16 public:
20  ZGDatabasePeerSession(const ZGPeerSettings & peerSettings);
21 
23  virtual status_t AttachedToServer();
24 
28  IDatabaseObject * GetDatabaseObject(uint32 whichDatabase) {return _databaseObjects[whichDatabase]();}
29 
33  const IDatabaseObject * GetDatabaseObject(uint32 whichDatabase) const {return _databaseObjects[whichDatabase]();}
34 
35 protected:
41  virtual IDatabaseObjectRef CreateDatabaseObject(uint32 whichDatabase) = 0;
42 
43  // ZGPeerSession API implementation
44  virtual void ResetLocalDatabaseToDefault(uint32 whichDatabase, uint32 & dbChecksum);
45  virtual ConstMessageRef SeniorUpdateLocalDatabase(uint32 whichDatabase, uint32 & dbChecksum, const ConstMessageRef & seniorDoMsg);
46  virtual status_t JuniorUpdateLocalDatabase(uint32 whichDatabase, uint32 & dbChecksum, const ConstMessageRef & juniorDoMsg);
47  virtual MessageRef SaveLocalDatabaseToMessage(uint32 whichDatabase) const;
48  virtual status_t SetLocalDatabaseFromMessage(uint32 whichDatabase, uint32 & dbChecksum, const ConstMessageRef & newDBStateMsg);
49  virtual uint32 CalculateLocalDatabaseChecksum(uint32 whichDatabase) const;
50  virtual String GetLocalDatabaseContentsAsString(uint32 whichDatabase) const;
51 
52 private:
53  Queue<IDatabaseObjectRef> _databaseObjects;
54 };
55 DECLARE_REFTYPES(ZGDatabasePeerSession);
56 
57 }; // end namespace zg
58 
59 #endif
This immutable class holds various read-only settings that will be used to define the peer's behavior...
const IDatabaseObject * GetDatabaseObject(uint32 whichDatabase) const
Convenience method: Returns a read-only pointer to the specified IDatabaseObject that we hold...
An interface for an object that represents the full contents of a ZG database.
virtual status_t SetLocalDatabaseFromMessage(uint32 whichDatabase, uint32 &dbChecksum, const ConstMessageRef &newDBStateMsg)
This method should be implemented to replace the current state of the specified local database with t...
virtual ConstMessageRef SeniorUpdateLocalDatabase(uint32 whichDatabase, uint32 &dbChecksum, const ConstMessageRef &seniorDoMsg)
This method will only be called on the senior peer.
virtual uint32 CalculateLocalDatabaseChecksum(uint32 whichDatabase) const
This method is used for sanity-checking.
virtual void ResetLocalDatabaseToDefault(uint32 whichDatabase, uint32 &dbChecksum)
Must be implemented to reset local state of the specified database to its well-known default state...
ZGDatabasePeerSession(const ZGPeerSettings &peerSettings)
Constructor.
This is a convenience class; it is the same as a ZGPeerSession except that it also knows how to creat...
virtual IDatabaseObjectRef CreateDatabaseObject(uint32 whichDatabase)=0
This will be called as part of the startup sequence.
The zg namespace contains the public API of the ZG library.
virtual status_t AttachedToServer()
Overridden to create and set up our IDatabaseObjects.
virtual status_t JuniorUpdateLocalDatabase(uint32 whichDatabase, uint32 &dbChecksum, const ConstMessageRef &juniorDoMsg)
This method will only be called on junior peers.
virtual MessageRef SaveLocalDatabaseToMessage(uint32 whichDatabase) const
This method should be implemented to save the state of the specified local database into a Message...
virtual String GetLocalDatabaseContentsAsString(uint32 whichDatabase) const
This method may be implemented to return a human-readable representation of the specified database's ...
This is the class that a user program would typically subclass from and add to a ReflectServer in ord...
Definition: ZGPeerSession.h:28
IDatabaseObject * GetDatabaseObject(uint32 whichDatabase)
Convenience method: Returns a read/write pointer to the specified IDatabaseObject that we hold...