summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdapterCache.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-10-12 17:21:02 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-10-12 17:21:02 +0000
commitaac841a43441f7911056ddbc6fc8c21aa6126431 (patch)
tree8dcad281655b53155e9c10e72b07d436208787a8 /cpp/src/IceGrid/AdapterCache.h
parentchanging getLogger to return a custom Python impl (diff)
downloadice-aac841a43441f7911056ddbc6fc8c21aa6126431.tar.bz2
ice-aac841a43441f7911056ddbc6fc8c21aa6126431.tar.xz
ice-aac841a43441f7911056ddbc6fc8c21aa6126431.zip
Added support for replica groups and removed replicated adapters.
Diffstat (limited to 'cpp/src/IceGrid/AdapterCache.h')
-rw-r--r--cpp/src/IceGrid/AdapterCache.h72
1 files changed, 55 insertions, 17 deletions
diff --git a/cpp/src/IceGrid/AdapterCache.h b/cpp/src/IceGrid/AdapterCache.h
index f3b757d51b4..a05a4df0189 100644
--- a/cpp/src/IceGrid/AdapterCache.h
+++ b/cpp/src/IceGrid/AdapterCache.h
@@ -34,42 +34,80 @@ public:
AdapterEntry(Cache<std::string, AdapterEntry>&, const std::string&);
- AdapterPrx getProxy(const std::string&) const;
- std::vector<std::pair<std::string, AdapterPrx> > getProxies(int&);
- float getLeastLoadedNodeLoad(LoadSample) const;
- std::string getApplication() const;
+ virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(int&) {
+ return std::vector<std::pair<std::string, AdapterPrx> >(); }
+ virtual float getLeastLoadedNodeLoad(LoadSample) const { return 0.0f; }
+ virtual std::string getApplication() const { return ""; }
+ virtual bool canRemove();
+
+protected:
+
+ AdapterCache& _cache;
+ const std::string _id;
+};
+typedef IceUtil::Handle<AdapterEntry> AdapterEntryPtr;
+
+class ServerAdapterEntry : public AdapterEntry
+{
+public:
- void enableReplication(const LoadBalancingPolicyPtr&);
- void disableReplication();
+ ServerAdapterEntry(Cache<std::string, AdapterEntry>&, const std::string&);
- void addReplica(const std::string&, const ServerEntryPtr&);
- void removeReplica(const std::string&);
+ virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(int&);
+ virtual float getLeastLoadedNodeLoad(LoadSample) const;
+ virtual std::string getApplication() const;
+
+ void set(const ServerEntryPtr&, const std::string&);
+ void destroy();
+
+ AdapterPrx getProxy(const std::string& = std::string()) const;
- bool canRemove();
-
private:
- Cache<std::string, AdapterEntry>& _cache;
- const std::string _id;
- bool _replicated;
+ ServerEntryPtr getServer() const;
+
+ ServerEntryPtr _server;
+ std::string _replicaGroupId;
+};
+typedef IceUtil::Handle<ServerAdapterEntry> ServerAdapterEntryPtr;
+
+class ReplicaGroupEntry : public AdapterEntry
+{
+public:
+
+ ReplicaGroupEntry(Cache<std::string, AdapterEntry>&, const std::string&);
+
+ virtual std::vector<std::pair<std::string, AdapterPrx> > getProxies(int&);
+ virtual float getLeastLoadedNodeLoad(LoadSample) const;
+ virtual std::string getApplication() const;
+
+ void set(const std::string&, const LoadBalancingPolicyPtr&);
+ void addReplica(const std::string&, const ServerAdapterEntryPtr&);
+ void removeReplica(const std::string&);
+
+private:
+
LoadBalancingPolicyPtr _loadBalancing;
int _loadBalancingNReplicas;
LoadSample _loadSample;
- typedef std::vector<std::pair<std::string, ServerEntryPtr> > ReplicaSeq;
+ std::string _application;
+ typedef std::vector<std::pair<std::string, ServerAdapterEntryPtr> > ReplicaSeq;
ReplicaSeq _replicas;
int _lastReplica;
};
-typedef IceUtil::Handle<AdapterEntry> AdapterEntryPtr;
+typedef IceUtil::Handle<ReplicaGroupEntry> ReplicaGroupEntryPtr;
class AdapterCache : public CacheByString<AdapterEntry>
{
public:
- AdapterEntryPtr get(const std::string&, bool = false) const;
+ AdapterEntryPtr get(const std::string&) const;
+ ServerAdapterEntryPtr getServerAdapter(const std::string&, bool = false) const;
+ ReplicaGroupEntryPtr getReplicaGroup(const std::string&, bool = false) const;
protected:
- AdapterEntryPtr addImpl(const std::string&);
+ AdapterEntryPtr addImpl(const std::string&, const AdapterEntryPtr&);
AdapterEntryPtr removeImpl(const std::string&);
};