Impelement pkgmgr_client_remove_listen_status 17/309717/1
authorIlho Kim <ilho159.kim@samsung.com>
Tue, 16 Apr 2024 01:23:36 +0000 (10:23 +0900)
committerIlho Kim <ilho159.kim@samsung.com>
Tue, 16 Apr 2024 03:02:34 +0000 (12:02 +0900)
Change-Id: Iaced471eb6c22a5f64a95d1708b48368724899e0
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
client/src/api_stub.cc
client/src/signal_receiver.cc
client/src/signal_receiver.hh

index b60ae41..20dc44d 100644 (file)
@@ -1215,8 +1215,20 @@ API int pkgmgr_client_listen_app_status(pkgmgr_client *pc,
 }
 
 API int pkgmgr_client_remove_listen_status(pkgmgr_client *pc) {
-  //TODO
-  return PKGMGR_R_OK;
+  if (pc == nullptr) {
+    _E("invalid parameter");
+    return PKGMGR_R_EINVAL;
+  }
+
+  auto* con = static_cast<Connector*>(pc);
+  try {
+    const auto& receiver = con->GetSignalReceiver();
+    receiver->RemoveEventHandler();
+    return PKGMGR_R_OK;
+  } catch (...) {
+    _E("Exception occured");
+    return PKGMGR_R_ERROR;
+  }
 }
 
 API int pkgmgr_client_broadcast_status(pkgmgr_client *pc, const char *pkg_type,
index b4761f0..fc669e8 100644 (file)
@@ -257,6 +257,17 @@ void SignalReceiver::SetStatusType(int status_type) {
 }
 
 
+void SignalReceiver::RemoveEventHandler() {
+  handlers_.clear();
+  global_handlers_.clear();
+  res_handlers_.clear();
+  global_res_handlers_.clear();
+  size_info_handlers_.clear();
+  global_size_info_handlers_.clear();
+  global_pkg_upgrade_handlers_.clear();
+}
+
+
 int SignalReceiver::GetRequestId() {
   return ++request_id_;
 }
index 18a4572..65db908 100644 (file)
@@ -58,6 +58,7 @@ class SignalReceiver : public pkg_group::PkgSignal {
       void* data);
   int AddEventHandler(pkgmgr_pkg_upgrade_handler event_cb, void* data);
   void SetStatusType(int status_type);
+  void RemoveEventHandler();
 
  private:
   static int GetRequestId();