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;
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
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) {
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
~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_;