summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdapterCache.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-05-02 17:34:45 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-05-02 17:34:45 +0000
commit4bc0f1f2475d28d5e3e86d3a43cd50413300fb5b (patch)
tree0a183eb32423ca1177e59042d23b04fb8452452e /cpp/src/IceGrid/AdapterCache.h
parentmodifying property name a bit (diff)
downloadice-4bc0f1f2475d28d5e3e86d3a43cd50413300fb5b.tar.bz2
ice-4bc0f1f2475d28d5e3e86d3a43cd50413300fb5b.tar.xz
ice-4bc0f1f2475d28d5e3e86d3a43cd50413300fb5b.zip
Cleaned up the server, adapter and object cache classes.
Diffstat (limited to 'cpp/src/IceGrid/AdapterCache.h')
-rw-r--r--cpp/src/IceGrid/AdapterCache.h50
1 files changed, 28 insertions, 22 deletions
diff --git a/cpp/src/IceGrid/AdapterCache.h b/cpp/src/IceGrid/AdapterCache.h
index 386b2b14c66..8a70c23ddca 100644
--- a/cpp/src/IceGrid/AdapterCache.h
+++ b/cpp/src/IceGrid/AdapterCache.h
@@ -33,15 +33,13 @@ class AdapterEntry : public Allocatable, public IceUtil::Mutex
{
public:
- AdapterEntry(Cache<std::string, AdapterEntry>&, const std::string&);
-
- virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(bool, int&, const SessionIPtr&)
- {
- assert(false);
- return std::vector<std::pair<std::string, AdapterPrx> >();
- }
- virtual float getLeastLoadedNodeLoad(LoadSample) const { assert(false); return 0.0; }
- virtual std::string getApplication() const { assert(false); return "";}
+ AdapterEntry(AdapterCache&, const std::string&, bool, const AllocatablePtr&);
+
+ virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(int&, const SessionIPtr&) = 0;
+ virtual float getLeastLoadedNodeLoad(LoadSample) const = 0;
+ virtual std::string getApplication() const = 0;
+ virtual AdapterInfoSeq getAdapterInfo() const = 0;
+
virtual bool canRemove();
protected:
@@ -55,14 +53,13 @@ class ServerAdapterEntry : public AdapterEntry
{
public:
- ServerAdapterEntry(Cache<std::string, AdapterEntry>&, const std::string&);
+ ServerAdapterEntry(AdapterCache&, const std::string&, const std::string&, bool, const ServerEntryPtr&);
- virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(bool, int&, const SessionIPtr&);
+ virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(int&, const SessionIPtr&);
virtual float getLeastLoadedNodeLoad(LoadSample) const;
virtual std::string getApplication() const;
-
- void set(const ServerEntryPtr&, const std::string&, bool);
- void destroy();
+ virtual AdapterInfoSeq getAdapterInfo() const;
+ virtual const std::string& getReplicaGroupId() const { return _replicaGroupId; }
AdapterPrx getProxy(const std::string& = std::string()) const;
@@ -73,8 +70,8 @@ private:
ServerEntryPtr getServer() const;
- ServerEntryPtr _server;
- std::string _replicaGroupId;
+ const std::string _replicaGroupId;
+ const ServerEntryPtr _server;
};
typedef IceUtil::Handle<ServerAdapterEntry> ServerAdapterEntryPtr;
@@ -82,24 +79,27 @@ class ReplicaGroupEntry : public AdapterEntry
{
public:
- ReplicaGroupEntry(Cache<std::string, AdapterEntry>&, const std::string&);
+ ReplicaGroupEntry(AdapterCache&, const std::string&, const std::string&, const LoadBalancingPolicyPtr&);
- virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(bool, int&, const SessionIPtr&);
+ virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(int&, const SessionIPtr&);
virtual float getLeastLoadedNodeLoad(LoadSample) const;
virtual std::string getApplication() const;
+ virtual AdapterInfoSeq getAdapterInfo() const;
- void set(const std::string&, const LoadBalancingPolicyPtr&);
void addReplica(const std::string&, const ServerAdapterEntryPtr&);
void removeReplica(const std::string&);
+ void update(const LoadBalancingPolicyPtr&);
+
typedef std::vector<std::pair<std::string, ServerAdapterEntryPtr> > ReplicaSeq;
private:
+ const std::string _application;
+
LoadBalancingPolicyPtr _loadBalancing;
int _loadBalancingNReplicas;
LoadSample _loadSample;
- std::string _application;
ReplicaSeq _replicas;
int _lastReplica;
@@ -111,10 +111,16 @@ class AdapterCache : public CacheByString<AdapterEntry>
{
public:
+ ServerAdapterEntryPtr addServerAdapter(const std::string&, const std::string&, bool, const ServerEntryPtr&);
+ ReplicaGroupEntryPtr addReplicaGroup(const std::string&, const std::string&, const LoadBalancingPolicyPtr&);
+
AdapterEntryPtr get(const std::string&) const;
- ServerAdapterEntryPtr getServerAdapter(const std::string&, bool = false) const;
- ReplicaGroupEntryPtr getReplicaGroup(const std::string&, bool = false) const;
+ ServerAdapterEntryPtr getServerAdapter(const std::string&) const;
+ ReplicaGroupEntryPtr getReplicaGroup(const std::string&) const;
+ void removeServerAdapter(const std::string&);
+ void removeReplicaGroup(const std::string&);
+
protected:
virtual AdapterEntryPtr addImpl(const std::string&, const AdapterEntryPtr&);