Move function definition to aul header
[platform/core/appfw/aul-1.git] / src / launch_with_result.cc
index 3fc7a4d..1bbca55 100644 (file)
@@ -32,6 +32,7 @@
 #include "aul_svc.h"
 #include "aul_svc_priv_key.h"
 #include "aul_util.h"
+#include "cpu_inheritance.hh"
 #include "launch.h"
 
 using namespace aul::internal;
@@ -239,8 +240,10 @@ class ErrorInfo {
  public:
   ErrorInfo(std::string seq_num, tizen_base::Bundle b, int cmd,
       ErrCb error_cb, void* user_data)
-      : seq_num_(std::move(seq_num)), b_(std::move(b)), cmd_(cmd),
-          error_cb_(std::move(error_cb)), user_data_(user_data) {
+      : seq_num_(std::move(seq_num)),
+        b_(std::move(b)), cmd_(cmd),
+        error_cb_(std::move(error_cb)),
+        user_data_(user_data) {
   }
 
   ErrorInfo(const ErrorInfo&) = delete;
@@ -310,17 +313,15 @@ class ErrorInfo {
   int cmd_;
   ErrCb error_cb_;
   void* user_data_;
+  CPUInheritance inheritance_;
 };
 
 std::string __gen_seq_num() {
-  static std::atomic<int> num;
-  char buf[MAX_LOCAL_BUFSZ];
-
-  int n = num.fetch_add(1);
-  unsigned int seed = time(nullptr) + n;
-  snprintf(buf, sizeof(buf), "%d@%d", rand_r(&seed), n);
-
-  return buf;
+  char uuid[37];
+  uuid_t u;
+  uuid_generate(u);
+  uuid_unparse(u, uuid);
+  return std::string(uuid);
 }
 
 int __get_caller_pid(const tizen_base::Bundle& b) {
@@ -397,6 +398,9 @@ int __recv_reply_bundle(int fd, bundle** reply_b) {
   int ret = aul_sock_recv_reply_pkt(fd, &pkt);
   if (ret != 0) {
     _E("Failed to receive the packet. result(%d)", ret);
+    if (ret == -EAGAIN)
+      return AUL_R_ETIMEOUT;
+
     return AUL_R_ECOMM;
   }
 
@@ -409,6 +413,9 @@ int __recv_reply_bundle(int fd, bundle** reply_b) {
   ret = pkt_auto->cmd;
   if (ret < 0) {
     _E("The launch request is failed. result(%d)", ret);
+    if (ret == -EAGAIN)
+      return AUL_R_ETIMEOUT;
+
     return AUL_R_ERROR;
   }
 
@@ -453,7 +460,7 @@ int __send_request_with_callback(int cmd, const char* appid, bundle* b,
       .With(b)
       .SetAppId(appid)
       .Send();
-  if (fd < 0 || fd > sysconf(_SC_OPEN_MAX)) {
+  if (fd < 0 || fd >= sysconf(_SC_OPEN_MAX)) {
     _E("Failed to send launch request. appid(%s), result(%d)",
         appid, fd);
     if (reply_cb)
@@ -492,7 +499,7 @@ int __send_launch_request(const std::string& appid, bundle* kb, uid_t uid) {
       .With(b)
       .SetAppId(appid)
       .Send();
-  if (fd < 0 || fd > sysconf(_SC_OPEN_MAX)) {
+  if (fd < 0 || fd >= sysconf(_SC_OPEN_MAX)) {
     _E("Failed to send launch request. appid(%s), result(%d)",
         appid.c_str(), fd);
     return AUL_R_ECOMM;
@@ -758,13 +765,13 @@ extern "C" API int aul_launch_app_with_result_async_for_uid(const char* appid,
 }
 
 extern "C" API int aul_send_launch_request_for_uid(const char* appid,
-    bundle* b, uid_t uid, void (*reply_cb)(bundle*, int, void*),
-    void (*error_cb)(int, void*), void* user_data) {
+    bundle* b, uid_t uid, aul_reply_cb reply_cb,
+    aul_result_cb result_cb, void* user_data) {
   return __send_request_with_callback(APP_SEND_LAUNCH_REQUEST, appid, b,
-      uid, reply_cb, error_cb, user_data);
+      uid, reply_cb, result_cb, user_data);
 }
 
-extern "C"  API int aul_send_launch_request_sync_for_uid(const char* appid,
+extern "C" API int aul_send_launch_request_sync_for_uid(const char* appid,
     bundle* b, uid_t uid, bundle** res_b) {
   if (!aul_is_initialized()) {
     if (aul_launch_init(nullptr, nullptr) < 0) {