diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-10-12 17:21:02 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-10-12 17:21:02 +0000 |
commit | aac841a43441f7911056ddbc6fc8c21aa6126431 (patch) | |
tree | 8dcad281655b53155e9c10e72b07d436208787a8 /cpp/src/IceGrid/AdapterCache.h | |
parent | changing getLogger to return a custom Python impl (diff) | |
download | ice-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.h | 72 |
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&); }; |