// // Copyright (c) ZeroC, Inc. All rights reserved. // #ifndef ICEGRID_ADMINSESSIONI_H #define ICEGRID_ADMINSESSIONI_H #include #include #include #include namespace IceGrid { class RegistryI; class FileIteratorI; class AdminSessionI : public BaseSessionI, public AdminSession { public: AdminSessionI(const std::string&, const std::shared_ptr&, std::chrono::seconds, const std::shared_ptr&); std::shared_ptr _register(const std::shared_ptr&, const std::shared_ptr&); void keepAlive(const Ice::Current& current) override { BaseSessionI::keepAlive(current); } std::shared_ptr getAdmin(const Ice::Current&) const override; std::shared_ptr getAdminCallbackTemplate(const Ice::Current&) const override; void setObservers(std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, const Ice::Current&) override; void setObserversByIdentity(Ice::Identity, Ice::Identity, Ice::Identity, Ice::Identity, Ice::Identity, const Ice::Current&) override; int startUpdate(const Ice::Current&) override; void finishUpdate(const Ice::Current&) override; std::string getReplicaName(const Ice::Current&) const override; std::shared_ptr openServerLog(std::string, std::string, int, const Ice::Current&) override; std::shared_ptr openServerStdOut(std::string, int, const Ice::Current&) override; std::shared_ptr openServerStdErr(std::string, int, const Ice::Current&) override; std::shared_ptr openNodeStdOut(std::string, int, const Ice::Current&) override; std::shared_ptr openNodeStdErr(std::string, int, const Ice::Current&) override; std::shared_ptr openRegistryStdOut(std::string, int, const Ice::Current&) override; std::shared_ptr openRegistryStdErr(std::string, int, const Ice::Current&) override; void destroy(const Ice::Current&) override; void removeFileIterator(const Ice::Identity&, const Ice::Current&); private: void setupObserverSubscription(TopicName, const std::shared_ptr&, bool = false); std::shared_ptr addForwarder(const Ice::Identity&, const Ice::Current&); std::shared_ptr addForwarder(const std::shared_ptr&); std::shared_ptr addFileIterator(const std::shared_ptr&, const std::string&, int, const Ice::Current&); void destroyImpl(bool) override; const std::chrono::seconds _timeout; const std::string _replicaName; std::shared_ptr _admin; std::map, bool>> _observers; std::shared_ptr _registry; std::shared_ptr _adminCallbackTemplate; }; class AdminSessionFactory { public: AdminSessionFactory(const std::shared_ptr&, const std::shared_ptr&, const std::shared_ptr&, const std::shared_ptr&); std::shared_ptr createGlacier2Session(const std::string&, const std::shared_ptr&); std::shared_ptr createSessionServant(const std::string&); const std::shared_ptr& getTraceLevels() const; private: const std::shared_ptr _servantManager; const std::shared_ptr _database; const std::chrono::seconds _timeout; const std::shared_ptr _reaper; const std::shared_ptr _registry; const bool _filters; }; class AdminSessionManagerI : public Glacier2::SessionManager { public: AdminSessionManagerI(const std::shared_ptr&); std::shared_ptr create(std::string, std::shared_ptr, const Ice::Current&) override; private: const std::shared_ptr _factory; }; class AdminSSLSessionManagerI : public Glacier2::SSLSessionManager { public: AdminSSLSessionManagerI(const std::shared_ptr&); std::shared_ptr create(Glacier2::SSLInfo, std::shared_ptr, const Ice::Current&) override; private: const std::shared_ptr _factory; }; class FileIteratorI : public FileIterator { public: FileIteratorI(const std::shared_ptr&, const std::shared_ptr&, const std::string&, long long, int); virtual bool read(int, Ice::StringSeq&, const Ice::Current&); virtual void destroy(const Ice::Current&); private: const std::shared_ptr _session; const std::shared_ptr _reader; const std::string _filename; long long _offset; const int _messageSizeMax; }; }; #endif