class ESConnection : public rpc_proxy::EventSystem::IEventListener {
public:
- void OnConnected() override { _D("OnConnected"); }
+ void OnConnected() override {
+ connected_ = true;
+ _D("OnConnected");
+ }
/* LCOV_EXCL_START */
void OnDisconnected() override {
+ connected_ = false;
es_proxy_.reset();
_E("OnDisconnected");
}
_E("OnRejected");
}
/* LCOV_EXCL_STOP */
+
+ bool IsConnected() const {
+ return connected_;
+ }
+
+ void Reset() {
+ connected_ = false;
+ }
+
+ private:
+ bool connected_ = false;
} connection_listener_;
void Connect(bool sync) {
try {
std::string name = event_name;
- if (::IsReservedEvent(name)) {
+ if (!connection_listener_.IsConnected() && ::IsReservedEvent(name)) {
::Connect(false);
auto ev = std::unique_ptr<rpc_proxy::EventSystem::EventListener>(
new Event(callback, user_data));
return 0;
es_proxy_->Disconnect();
es_proxy_.reset();
+ connection_listener_.Reset();
return 0;
}