// // Copyright (c) ZeroC, Inc. All rights reserved. // #ifndef ICE_GRID_WELL_KNOWN_OBJECTS_MANAGER_H #define ICE_GRID_WELL_KNOWN_OBJECTS_MANAGER_H #include #include namespace IceGrid { class Database; class WellKnownObjectsManager { public: WellKnownObjectsManager(const std::shared_ptr&); void add(const std::shared_ptr&, const std::string&); void addEndpoint(const std::string&, const std::shared_ptr&); void finish(); void registerAll(); void registerAll(const std::shared_ptr&); void updateReplicatedWellKnownObjects(); std::shared_ptr getEndpoints(const std::string&); std::shared_ptr getLocator(); std::shared_ptr getLocatorRegistry(); private: bool initialized() const; std::shared_ptr getWellKnownObjectReplicatedProxy(const Ice::Identity&, const std::string&); const std::shared_ptr _database; bool _initialized; StringObjectProxyDict _endpoints; ObjectInfoSeq _wellKnownObjects; mutable std::mutex _mutex; }; }; #endif