summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Database.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-07-08 13:47:30 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-07-08 13:47:30 +0000
commit99894938dbde9a0bb10fc1998d9863cae52b8977 (patch)
tree5b68e52e9a62792f11d8a4e2c844d394cd39f496 /cpp/src/IceGrid/Database.h
parentFixed Ice interoperability issue (diff)
downloadice-99894938dbde9a0bb10fc1998d9863cae52b8977.tar.bz2
ice-99894938dbde9a0bb10fc1998d9863cae52b8977.tar.xz
ice-99894938dbde9a0bb10fc1998d9863cae52b8977.zip
More adapter replication changes.
Diffstat (limited to 'cpp/src/IceGrid/Database.h')
-rw-r--r--cpp/src/IceGrid/Database.h80
1 files changed, 28 insertions, 52 deletions
diff --git a/cpp/src/IceGrid/Database.h b/cpp/src/IceGrid/Database.h
index dd75f62e34e..d973b03da01 100644
--- a/cpp/src/IceGrid/Database.h
+++ b/cpp/src/IceGrid/Database.h
@@ -12,14 +12,17 @@
#include <IceUtil/Mutex.h>
#include <IceUtil/Shared.h>
-#include <IceUtil/Cache.h>
#include <Freeze/ConnectionF.h>
#include <Ice/CommunicatorF.h>
#include <IceGrid/Admin.h>
#include <IceGrid/Internal.h>
#include <IceGrid/StringApplicationDescriptorDict.h>
-#include <IceGrid/IdentityObjectDescDict.h>
+#include <IceGrid/IdentityObjectInfoDict.h>
#include <IceGrid/StringObjectProxyDict.h>
+#include <IceGrid/ServerCache.h>
+#include <IceGrid/NodeCache.h>
+#include <IceGrid/ObjectCache.h>
+#include <IceGrid/AdapterCache.h>
namespace IceGrid
{
@@ -32,44 +35,11 @@ typedef IceUtil::Handle<NodeSessionI> NodeSessionIPtr;
class ObserverSessionI;
+class ServerEntry;
+typedef IceUtil::Handle<ServerEntry> ServerEntryPtr;
+
class Database : public IceUtil::Shared, public IceUtil::Mutex
{
- class ServerEntry : public IceUtil::Shared, public IceUtil::Monitor<IceUtil::Mutex>
- {
- public:
-
- ServerEntry(Database&, const ServerInstanceDescriptor&);
-
- void sync();
- bool needsSync() const;
- void update(const ServerInstanceDescriptor&);
- void destroy();
- ServerInstanceDescriptor getDescriptor();
- ServerPrx getProxy(int&, int&);
- AdapterPrx getAdapter(const std::string&);
- bool canRemove();
-
- private:
-
- ServerPrx sync(StringAdapterPrxDict& adapters, int&, int&);
-
- Database& _database;
- std::auto_ptr<ServerInstanceDescriptor> _loaded;
- std::auto_ptr<ServerInstanceDescriptor> _load;
- std::auto_ptr<ServerInstanceDescriptor> _destroy;
- ServerPrx _proxy;
- std::map<std::string, AdapterPrx> _adapters;
- bool _synchronizing;
- bool _failed;
- int _activationTimeout;
- int _deactivationTimeout;
- };
- friend class ServerEntry;
- friend struct AddComponent;
-
- typedef IceUtil::Handle<ServerEntry> ServerEntryPtr;
- typedef std::vector<ServerEntryPtr> ServerEntrySeq;
-
public:
Database(const Ice::ObjectAdapterPtr&, const std::string&, int, const TraceLevelsPtr&);
@@ -102,16 +72,20 @@ public:
void setAdapterDirectProxy(const std::string&, const Ice::ObjectPrx&);
Ice::ObjectPrx getAdapterDirectProxy(const std::string&);
- AdapterPrx getAdapter(const std::string&);
+ AdapterPrx getAdapter(const std::string&, const std::string& = std::string());
Ice::StringSeq getAllAdapters(const std::string& = std::string());
- void addObjectDescriptor(const ObjectDescriptor&);
- void removeObjectDescriptor(const Ice::Identity&);
- void updateObjectDescriptor(const Ice::ObjectPrx&);
- ObjectDescriptor getObjectDescriptor(const Ice::Identity&);
+ void addObject(const ObjectInfo&);
+ void removeObject(const Ice::Identity&);
+ void updateObject(const Ice::ObjectPrx&);
+ Ice::ObjectPrx getObjectProxy(const Ice::Identity&, std::string&);
Ice::ObjectPrx getObjectByType(const std::string&);
Ice::ObjectProxySeq getObjectsWithType(const std::string&);
- ObjectDescriptorSeq getAllObjectDescriptors(const std::string& = std::string());
+ ObjectInfo getObjectInfo(const Ice::Identity&);
+ ObjectInfoSeq getAllObjectInfos(const std::string& = std::string());
+
+ const TraceLevelsPtr& getTraceLevels() const;
+ int getNodeSessionTimeout() const;
private:
@@ -124,12 +98,10 @@ private:
const std::set<std::string>&, ServerEntrySeq&);
void removeServers(const std::string&, const ServerInstanceDescriptorSeq&, const std::set<std::string>&,
ServerEntrySeq&);
+
ServerEntryPtr addServer(const std::string&, const ServerInstanceDescriptor&);
ServerEntryPtr updateServer(const ServerInstanceDescriptor&);
ServerEntryPtr removeServer(const std::string&, const ServerInstanceDescriptor&);
- void clearServer(const std::string&);
- void addComponent(const ServerEntryPtr&, const ComponentDescriptorPtr&);
- void removeComponent(const ComponentDescriptorPtr&);
void checkServerForAddition(const std::string&);
void checkAdapterForAddition(const std::string&);
@@ -137,6 +109,8 @@ private:
void checkSessionLock(ObserverSessionI*);
+ friend struct AddComponent;
+
static const std::string _descriptorDbName;
static const std::string _objectDbName;
static const std::string _adapterDbName;
@@ -146,18 +120,20 @@ private:
const std::string _envName;
const int _nodeSessionTimeout;
const TraceLevelsPtr _traceLevels;
+
+ NodeCache _nodeCache;
+ ObjectCache _objectCache;
+ AdapterCache _adapterCache;
+ ServerCache _serverCache;
+
RegistryObserverPrx _registryObserver;
NodeObserverPrx _nodeObserver;
- std::map<std::string, ServerEntryPtr> _servers;
- std::map<std::string, ServerEntryPtr> _serversByAdapterId;
- std::map<std::string, std::set<std::string> > _serversByNode;
- std::map<std::string, NodeSessionIPtr> _nodes;
std::map<std::string, std::string> _applicationsByServerName;
Freeze::ConnectionPtr _connection;
StringApplicationDescriptorDict _descriptors;
- IdentityObjectDescDict _objects;
+ IdentityObjectInfoDict _objects;
StringObjectProxyDict _adapters;
ObserverSessionI* _lock;