diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-05-02 17:34:45 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-05-02 17:34:45 +0000 |
commit | 4bc0f1f2475d28d5e3e86d3a43cd50413300fb5b (patch) | |
tree | 0a183eb32423ca1177e59042d23b04fb8452452e /cpp/src/IceGrid/AdapterCache.h | |
parent | modifying property name a bit (diff) | |
download | ice-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.h | 50 |
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&); |