Fix issue for async connect 98/319298/4
authorinkyun.kil <inkyun.kil@samsung.com>
Mon, 21 Oct 2024 08:00:56 +0000 (17:00 +0900)
committerInkyun Kil <inkyun.kil@samsung.com>
Mon, 21 Oct 2024 08:29:52 +0000 (08:29 +0000)
- If it is already connected, OnConnectedCb will not be called.

Change-Id: Id4d2c16fb9f6e1ac2d64016cb5114a444e5f2ded
Signed-off-by: inkyun.kil <inkyun.kil@samsung.com>
src/es.cc

index 01d296ec2e6fe7ffd478364aa8bec382529349ff..0c4edb4bd94ee16c54bcdc8d2011e463e3dd1b4a 100644 (file)
--- a/src/es.cc
+++ b/src/es.cc
@@ -57,10 +57,14 @@ class Event : public rpc_proxy::EventSystem::EventListener {
 
 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");
   }
@@ -70,6 +74,17 @@ class ESConnection : public rpc_proxy::EventSystem::IEventListener {
     _E("OnRejected");
   }
   /* LCOV_EXCL_STOP */
+
+  bool IsConnected() const {
+    return connected_;
+  }
+
+  void Reset() {
+    connected_ = false;
+  }
+
+ private:
+  bool connected_ = false;
 } connection_listener_;
 
 void Connect(bool sync) {
@@ -123,7 +138,7 @@ extern "C" EXPORT_API int eventsystem_register_application_event(
   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));
@@ -176,6 +191,7 @@ extern "C" EXPORT_API int eventsystem_application_finalize() {
     return 0;
   es_proxy_->Disconnect();
   es_proxy_.reset();
+  connection_listener_.Reset();
   return 0;
 }