// // Copyright (c) ZeroC, Inc. All rights reserved. // #ifndef ICE_GRID_SERVER_ADAPTER_I_H #define ICE_GRID_SERVER_ADAPTER_I_H #include namespace IceGrid { class NodeI; class ServerI; class ServerAdapterI : public Adapter { public: ServerAdapterI(const std::shared_ptr&, ServerI*, const std::string&, const std::shared_ptr&, const std::string&, bool); ~ServerAdapterI() override; void activateAsync(std::function&)>, std::function, const Ice::Current&) override; std::shared_ptr getDirectProxy(const Ice::Current&) const override; void setDirectProxy(std::shared_ptr, const ::Ice::Current&) override; void destroy(); void updateEnabled(); void clear(); void activationFailed(const std::string&); void activationCompleted(); std::shared_ptr getProxy() const; private: const std::shared_ptr _node; const std::shared_ptr _this; const std::string _serverId; const std::string _id; const std::string _replicaId; ServerI* _server; std::shared_ptr _proxy; bool _enabled; std::vector&)>> _activateCB; bool _activateAfterDeactivating; mutable std::mutex _mutex; }; } #endif