diff options
author | Joe George <joe@zeroc.com> | 2021-01-28 16:26:44 -0500 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2021-02-01 16:59:30 -0500 |
commit | 92a6531e409f2691d82591e185a92299d415fc0f (patch) | |
tree | 60c79e2a8f327b8f0b6ebc06b06f48a2e8086f6a /cpp/src/IceGrid/NodeSessionI.h | |
parent | Port Glacier2, IceBox, IceBridge, IceDB, IceXML, icegriddb (diff) | |
download | ice-92a6531e409f2691d82591e185a92299d415fc0f.tar.bz2 ice-92a6531e409f2691d82591e185a92299d415fc0f.tar.xz ice-92a6531e409f2691d82591e185a92299d415fc0f.zip |
IceGrid and IceStorm
Diffstat (limited to 'cpp/src/IceGrid/NodeSessionI.h')
-rw-r--r-- | cpp/src/IceGrid/NodeSessionI.h | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/cpp/src/IceGrid/NodeSessionI.h b/cpp/src/IceGrid/NodeSessionI.h index b3ee36155b5..5958bd0a84e 100644 --- a/cpp/src/IceGrid/NodeSessionI.h +++ b/cpp/src/IceGrid/NodeSessionI.h @@ -12,54 +12,58 @@ namespace IceGrid { class Database; -typedef IceUtil::Handle<Database> DatabasePtr; - class TraceLevels; -typedef IceUtil::Handle<TraceLevels> TraceLevelsPtr; -class NodeSessionI : public NodeSession, public IceUtil::Mutex +class NodeSessionI : public NodeSession { public: - NodeSessionI(const DatabasePtr&, const NodePrx&, const InternalNodeInfoPtr&, int, const LoadInfo&); - - virtual void keepAlive(const LoadInfo&, const Ice::Current&); - virtual void setReplicaObserver(const ReplicaObserverPrx&, const Ice::Current&); - virtual int getTimeout(const Ice::Current&) const; - virtual NodeObserverPrx getObserver(const Ice::Current&) const; - virtual void loadServers_async(const AMD_NodeSession_loadServersPtr&, const Ice::Current&) const; - virtual Ice::StringSeq getServers(const Ice::Current&) const; - virtual void waitForApplicationUpdate_async(const AMD_NodeSession_waitForApplicationUpdatePtr&, - const std::string&, int, const Ice::Current&) const; - virtual void destroy(const Ice::Current&); - - virtual IceUtil::Time timestamp() const; - virtual void shutdown(); - - const NodePrx& getNode() const; - const InternalNodeInfoPtr& getInfo() const; + static std::shared_ptr<NodeSessionI> create(const std::shared_ptr<Database>&, const std::shared_ptr<NodePrx>&, + const std::shared_ptr<InternalNodeInfo>&, + std::chrono::seconds, const LoadInfo&); + + void keepAlive(LoadInfo, const Ice::Current&) override; + void setReplicaObserver(std::shared_ptr<ReplicaObserverPrx>, const Ice::Current&) override; + int getTimeout(const Ice::Current&) const override; + std::shared_ptr<NodeObserverPrx> getObserver(const Ice::Current&) const override; + void loadServersAsync(std::function<void()>, std::function<void(std::exception_ptr)>, + const Ice::Current&) const override; + Ice::StringSeq getServers(const Ice::Current&) const override; + void waitForApplicationUpdateAsync(std::string, int, std::function<void()>, std::function<void(std::exception_ptr)>, + const Ice::Current&) const override; + void destroy(const Ice::Current&) override; + + std::chrono::steady_clock::time_point timestamp() const; + void shutdown(); + + const std::shared_ptr<NodePrx>& getNode() const; + const std::shared_ptr<InternalNodeInfo>& getInfo() const; const LoadInfo& getLoadInfo() const; - NodeSessionPrx getProxy() const; + std::shared_ptr<NodeSessionPrx> getProxy() const; bool isDestroyed() const; private: + NodeSessionI(const std::shared_ptr<Database>&, const std::shared_ptr<NodePrx>&, + const std::shared_ptr<InternalNodeInfo>&, std::chrono::seconds, const LoadInfo&); + void destroyImpl(bool); - const DatabasePtr _database; - const TraceLevelsPtr _traceLevels; + const std::shared_ptr<Database> _database; + const std::shared_ptr<TraceLevels> _traceLevels; const std::string _name; - const NodePrx _node; - const InternalNodeInfoPtr _info; - const int _timeout; - NodeSessionPrx _proxy; - ReplicaObserverPrx _replicaObserver; - IceUtil::Time _timestamp; + const std::shared_ptr<NodePrx> _node; + const std::shared_ptr<InternalNodeInfo> _info; + const std::chrono::seconds _timeout; + std::shared_ptr<NodeSessionPrx> _proxy; + std::shared_ptr<ReplicaObserverPrx> _replicaObserver; + std::chrono::steady_clock::time_point _timestamp; LoadInfo _load; bool _destroy; + + mutable std::mutex _mutex; }; -typedef IceUtil::Handle<NodeSessionI> NodeSessionIPtr; }; |