Set execution id on action result
authorSangyoon Jang <jeremy.jang@samsung.com>
Mon, 12 May 2025 08:34:01 +0000 (17:34 +0900)
committer장상윤/Tizen Platform Lab(SR)/삼성전자 <jeremy.jang@samsung.com>
Tue, 13 May 2025 05:45:03 +0000 (14:45 +0900)
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/action/app_control_executor.cc
src/action/app_control_executor.hh

index 269ae146bdc4e10669ebc65a8bd885797acb2922..5d32435e735d0fdb940b320587ca37aa684e2664 100644 (file)
@@ -68,26 +68,6 @@ bool AppControlForeachCb(app_control_h app_control, const char* key,
   return true;
 }
 
-std::string GenerateActionResult(app_control_h reply) {
-  rapidjson::StringBuffer s;
-  rapidjson::Writer<rapidjson::StringBuffer> writer(s);
-
-  writer.StartObject();
-  writer.Key("id");
-  writer.String("ID");  // TODO: get real ID
-  writer.Key("result");
-  writer.StartObject();
-  int ret = app_control_foreach_extra_data(reply, AppControlForeachCb, &writer);
-  if (ret != APP_CONTROL_ERROR_NONE) {
-    LOG(ERROR) << "app_control_foreach_extra_data failed: " << ret;
-    return "";
-  }
-  writer.EndObject();
-  writer.EndObject();
-
-  return s.GetString();
-}
-
 app_control_h ConvertToAppControl(const common::ActionModel& action_model) {
   app_control_h handle = nullptr;
 
@@ -119,8 +99,7 @@ void ReplyCb(app_control_h request,
              app_control_result_e result,
              void* user_data) {
   auto on_reply = static_cast<action::AppControlExecutor*>(user_data);
-  std::string result_str = GenerateActionResult(reply);
-  on_reply->OnAppControlReply(result_str);
+  on_reply->OnAppControlReply(reply);
 }
 
 }  // namespace
@@ -153,10 +132,11 @@ int AppControlExecutor::Execute(const common::ActionModel& model) {
   return GetExecutionId();
 }
 
-void AppControlExecutor::OnAppControlReply(const std::string& reply) {
+void AppControlExecutor::OnAppControlReply(app_control_h reply) {
+  std::string result_str = GenerateActionResult(reply);
   LOG(DEBUG) << "reply from instance: " << GetRequesterId()
-      << ", reply: " << reply;
-  NotifyResult(reply);
+      << ", reply: " << result_str;
+  NotifyResult(result_str);
 }
 
 void AppControlExecutor::AddExtraData(const common::ActionModel& model) {
@@ -178,4 +158,27 @@ bool AppControlExecutor::SendAppControl() {
   return true;
 }
 
+std::string AppControlExecutor::GenerateActionResult(app_control_h reply) {
+  rapidjson::StringBuffer s;
+  rapidjson::Writer<rapidjson::StringBuffer> writer(s);
+
+  writer.StartObject();
+  writer.Key("id");
+  std::string execution_id = std::to_string(GetExecutionId());
+  writer.String(execution_id.c_str());
+  writer.Key("result");
+  writer.StartObject();
+  int ret = app_control_foreach_extra_data(reply, AppControlForeachCb, &writer);
+  if (ret != APP_CONTROL_ERROR_NONE) {
+    LOG(ERROR) << "app_control_foreach_extra_data failed: " << ret;
+    // TODO: generate error message
+    return "";
+  }
+  writer.EndObject();
+  writer.EndObject();
+
+  return s.GetString();
+}
+
+
 }  // namespace action
index 3a9626c6dff6e845c78f2e7f37c754be86253029..40c1602c1cf5eb885f5ce63049c1fa0359f94a2c 100644 (file)
@@ -31,11 +31,12 @@ class AppControlExecutor : public common::AbstractActionExecutor {
   ~AppControlExecutor();
   int Execute(const common::ActionModel& model) override;
 
-  void OnAppControlReply(const std::string& reply);
+  void OnAppControlReply(app_control_h reply);
 
  private:
   void AddExtraData(const common::ActionModel& model);
   bool SendAppControl();
+  std::string GenerateActionResult(app_control_h reply);
 
   common::ActionModel model_;
   app_control_h app_control_;