// // Copyright (c) ZeroC, Inc. All rights reserved. // #ifndef ICE_GRID_REGISTRYI_H #define ICE_GRID_REGISTRYI_H #include #include #include #include #include #include #include #include namespace IceGrid { class AdminSessionFactory; class ClientSessionFactory; class Database; class ReapThread; class SessionServantManager; class TraceLevels; class WellKnownObjectsManager; std::string getInstanceName(const std::shared_ptr&); class RegistryI : public Registry, public std::enable_shared_from_this { public: RegistryI(const std::shared_ptr&, const std::shared_ptr&, bool, bool, const std::string&, const std::string&); virtual ~RegistryI() = default; bool start(); bool startImpl(); void stop(); std::shared_ptr createSession(std::string, std::string, const Ice::Current&) override; std::shared_ptr createAdminSession(std::string, std::string, const Ice::Current&) override; std::shared_ptr createSessionFromSecureConnection(const Ice::Current&) override; std::shared_ptr createAdminSessionFromSecureConnection(const Ice::Current&) override; int getSessionTimeout(const Ice::Current&) const override; int getACMTimeout(const Ice::Current&) const override; std::string getName() const; RegistryInfo getInfo() const; void waitForShutdown(); virtual void shutdown(); std::string getServerAdminCategory() const { return _instanceName + "-RegistryServerAdminRouter"; } std::string getNodeAdminCategory() const { return _instanceName + "-RegistryNodeAdminRouter"; } std::string getReplicaAdminCategory() const { return _instanceName + "-RegistryReplicaAdminRouter"; } std::shared_ptr createAdminCallbackProxy(const Ice::Identity&) const; const std::shared_ptr& getRegistryAdapter() { return _registryAdapter; } std::shared_ptr getLocator(); private: void setupLocatorRegistry(); std::shared_ptr setupLocator(const std::shared_ptr&, const std::shared_ptr&); std::shared_ptr setupQuery(); std::shared_ptr setupRegistry(); std::shared_ptr setupInternalRegistry(); bool setupUserAccountMapper(); std::shared_ptr setupClientSessionFactory(const std::shared_ptr&); std::shared_ptr setupAdminSessionFactory(const std::shared_ptr&, const std::shared_ptr&, const std::shared_ptr&, const std::shared_ptr&); std::shared_ptr getPermissionsVerifier(const std::shared_ptr&, const std::string&); std::shared_ptr getSSLPermissionsVerifier(const std::shared_ptr&, const std::string&); Glacier2::SSLInfo getSSLInfo(const std::shared_ptr&, std::string&); NodePrxSeq registerReplicas(const std::shared_ptr&, const NodePrxSeq&); void registerNodes(const std::shared_ptr&, const NodePrxSeq&); const std::shared_ptr _communicator; const std::shared_ptr _traceLevels; const bool _nowarn; const bool _readonly; const std::string _initFromReplica; const std::string _collocatedNodeName; std::shared_ptr _database; std::shared_ptr _clientAdapter; std::shared_ptr _serverAdapter; std::shared_ptr _registryAdapter; std::shared_ptr _wellKnownObjects; std::string _instanceName; bool _master; std::string _replicaName; std::shared_ptr _reaper; IceUtil::TimerPtr _timer; std::shared_ptr _servantManager; std::chrono::seconds _sessionTimeout; std::unique_ptr _session; mutable PlatformInfo _platform; std::shared_ptr _clientSessionFactory; std::shared_ptr _clientVerifier; std::shared_ptr _sslClientVerifier; std::shared_ptr _adminSessionFactory; std::shared_ptr _adminVerifier; std::shared_ptr _sslAdminVerifier; std::shared_ptr _iceStorm; }; } #endif