Separate native API code from capmgr repository
authorSangyoon Jang <jeremy.jang@samsung.com>
Thu, 23 Aug 2018 08:15:52 +0000 (17:15 +0900)
committer장상윤/Tizen Platform Lab(SR)/Engineer/삼성전자 <jeremy.jang@samsung.com>
Thu, 23 Aug 2018 08:33:30 +0000 (17:33 +0900)
Change-Id: Ib3b33ba7372c1b332d0aef34525d594ceba0aa72
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
CMakeLists.txt
packaging/capmgr.spec
src/CMakeLists.txt
src/client/CMakeLists.txt [deleted file]
src/client/capmgr.pc.in [deleted file]
src/client/client.cc [deleted file]
src/client/dbus.cc [deleted file]
src/client/dbus.h [deleted file]
src/client/include/capmgr.h [deleted file]
tools/CMakeLists.txt [deleted file]
tools/capmgr_test.cc [deleted file]

index 22612bd7d7376f2cedcd2da4268e855a4e0ad1a9..6a4932a342b41f32c0d5ce0ba568dfe9d52eff2a 100644 (file)
@@ -18,7 +18,6 @@ SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Mo
 ## Targets
 SET(TARGET_CAPMGR "capmgr")
 SET(TARGET_LIB_COMMON "capmgr-common")
-SET(TARGET_LIB_CLIENT "capmgr-client")
 
 INCLUDE(FindPkgConfig)
 INCLUDE(ApplyPkgConfig)
@@ -37,8 +36,7 @@ PKG_CHECK_MODULES(PKGMGR_DEPS REQUIRED pkgmgr)
 PKG_CHECK_MODULES(PKGMGR_INFO_DEPS REQUIRED pkgmgr-info)
 PKG_CHECK_MODULES(SQLITE_DEPS REQUIRED sqlite3)
 
-FIND_PACKAGE(Boost REQUIRED COMPONENTS filesystem program_options system)
+FIND_PACKAGE(Boost REQUIRED COMPONENTS filesystem system)
 FIND_PACKAGE(GTest REQUIRED)
 
 ADD_SUBDIRECTORY(src)
-ADD_SUBDIRECTORY(tools)
index c1aefe027d13433388bfe0d92000b3dd120472c0..1b5111c20067794e85c917633de2549d61991e5d 100644 (file)
@@ -33,14 +33,6 @@ BuildRequires:  pkgconfig(sqlite3)
 %description
 Tizen Capability Manager
 
-%package devel
-Summary:   Capability Manager development files
-Group:     Application Framework/Package Management
-Requires:  %{name} = %{version}
-
-%description devel
-This package contains header files of capability manager library
-
 %package tests
 Summary: Unit-tests for capmgr
 Requires: %{name} = %{version}
@@ -82,20 +74,12 @@ systemctl daemon-reload
 %license LICENSE
 %defattr(-,root,root,-)
 %{_bindir}/capmgr
-%{_bindir}/capmgr-test
-%{_libdir}/libcapmgr-client.so.*
-%{_libdir}/libcapmgr-common.so.*
+%{_libdir}/libcapmgr-common.so*
 %{_sysconfdir}/dbus-1/system.d/%{name}.conf
 %{_unitdir}/%{name}.service
 %{_unitdir}/multi-user.target.wants/%{name}.service
 %{_tmpfilesdir}/%{name}.conf
 
-%files devel
-%{_includedir}/%{name}.h
-%{_libdir}/pkgconfig/%{name}.pc
-%{_libdir}/libcapmgr-client.so
-%{_libdir}/libcapmgr-common.so
-
 %files tests
 %{_bindir}/capmgr-ut/*
 /opt/share/capmgr-ut/*
index d1ea9c2ea53aa6f8718b0632982a1f6c654d249d..1d008faedd76f10b4ecd567e51ba0f6b37913f3f 100644 (file)
@@ -1,4 +1,3 @@
 ADD_SUBDIRECTORY(capmgr)
-ADD_SUBDIRECTORY(client)
 ADD_SUBDIRECTORY(common)
 ADD_SUBDIRECTORY(unit_tests)
diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt
deleted file mode 100644 (file)
index ee0793f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} CLIENT_SRCS)
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../)
-
-ADD_LIBRARY(${TARGET_LIB_CLIENT} SHARED
-  ${CLIENT_SRCS}
-)
-
-APPLY_PKG_CONFIG(${TARGET_LIB_CLIENT} PUBLIC
-  AUL_DEPS
-  BUNDLE_DEPS
-  DLOG_DEPS
-  GIO_DEPS
-  GLIB_DEPS
-)
-
-SET_TARGET_PROPERTIES(${TARGET_LIB_CLIENT} PROPERTIES VERSION ${FULLVER})
-SET_TARGET_PROPERTIES(${TARGET_LIB_CLIENT} PROPERTIES SOVERSION ${MAJORVER})
-TARGET_LINK_LIBRARIES(${TARGET_LIB_CLIENT} PUBLIC ${TARGET_LIB_COMMON})
-
-INSTALL(TARGETS ${TARGET_LIB_CLIENT} DESTINATION ${LIB_INSTALL_DIR})
-CONFIGURE_FILE(capmgr.pc.in capmgr.pc @ONLY)
-INSTALL(FILES capmgr.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
-INSTALL(DIRECTORY include/ DESTINATION ${INCLUDEDIR} FILES_MATCHING PATTERN "*.h")
diff --git a/src/client/capmgr.pc.in b/src/client/capmgr.pc.in
deleted file mode 100644 (file)
index 60ccf3e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@PREFIX@
-exec_prefix=@EXEC_PREFIX@
-libdir=@LIBDIR@
-includedir=@INCLUDEDIR@
-
-Name: capmgr
-Description: capability-manager API
-Version: @FULLVER@
-Requires: capi-base-common
-Libs: -L${libdir} -lcapmgr-client
-Cflags: -I${includedir}
diff --git a/src/client/client.cc b/src/client/client.cc
deleted file mode 100644 (file)
index a4a3a3b..0000000
+++ /dev/null
@@ -1,628 +0,0 @@
-// Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by a apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include <aul_svc.h>
-#include <bundle.h>
-#include <bundle_internal.h>
-#include <glib.h>
-
-#include <cstring>
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "client/dbus.h"
-#include "client/include/capmgr.h"
-#include "common/sql_connection.h"
-#include "common/sql_statement.h"
-#include "common/sqlite_connection.h"
-#include "common/utils/logging.h"
-
-#define API __attribute__((visibility("default")))
-
-namespace {
-
-const char kDBPath[] = "/run/capmgr/capmgr.db";
-
-}  // namespace
-
-struct capmgr_device_s {
-  std::string device_id;
-  std::string model_name;
-  std::string device_name;
-  std::string platform_ver;
-  std::string profile;
-  std::string sw_ver;
-};
-
-struct capmgr_app_control_s {
-  capmgr_device_h device;
-  bundle* b;
-};
-
-struct capmgr_package_info_s {
-  std::string pkgid;
-  std::string label;
-  std::string version;
-  std::vector<std::string> appid_list;
-};
-
-API int capmgr_device_foreach_devices(capmgr_device_foreach_cb cb,
-    void* user_data) {
-  if (!cb)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  std::unique_ptr<capmgr::SQLConnection> sql_conn(
-      new capmgr::SQLiteConnection(kDBPath, true));
-
-  const char kQueryForeachDevices[] =
-      "SELECT device_id, model_name, device_name, platform_ver,"
-      "  profile, sw_ver "
-      "FROM devices";
-  std::shared_ptr<capmgr::SQLStatement> stmt = sql_conn->PrepareStatement(
-      kQueryForeachDevices);
-  if (!stmt)
-    return CAPMGR_ERROR_IO_ERROR;
-
-  while (stmt->Step() == capmgr::SQLStatement::StepResult::ROW) {
-    struct capmgr_device_s dev;
-    int idx = 0;
-    dev.device_id = stmt->GetColumnString(idx++);
-    dev.model_name = stmt->GetColumnString(idx++);
-    dev.device_name = stmt->GetColumnString(idx++);
-    dev.platform_ver = stmt->GetColumnString(idx++);
-    dev.profile = stmt->GetColumnString(idx++);
-    dev.sw_ver = stmt->GetColumnString(idx++);
-    if (cb(&dev, user_data))
-      break;
-  }
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_device_clone(const capmgr_device_h device,
-    capmgr_device_h* device_clone) {
-  if (!device || !device_clone)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  try {
-    struct capmgr_device_s* clone = new struct capmgr_device_s;
-
-    clone->device_id = device->device_id;
-    clone->model_name = device->model_name;
-    clone->device_name = device->device_name;
-    clone->platform_ver = device->platform_ver;
-    clone->profile = device->profile;
-    clone->sw_ver = device->sw_ver;
-
-    *device_clone = clone;
-  } catch (const std::bad_alloc& e) {
-    LOG(ERROR) << e.what();
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-  }
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_device_destroy(capmgr_device_h device) {
-  if (!device)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  delete device;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_device_get_device_id(capmgr_device_h device,
-    char** device_id) {
-  if (!device || !device_id)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *device_id = strdup(device->device_id.c_str());
-  if (*device_id == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_device_get_model_name(capmgr_device_h device,
-    char** model_name) {
-  if (!device || !model_name)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *model_name = strdup(device->model_name.c_str());
-  if (*model_name == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_device_get_device_name(capmgr_device_h device,
-    char** device_name) {
-  if (!device || !device_name)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *device_name = strdup(device->device_name.c_str());
-  if (*device_name == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_device_get_platform_ver(capmgr_device_h device,
-    char** platform_ver) {
-  if (!device || !platform_ver)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *platform_ver = strdup(device->platform_ver.c_str());
-  if (*platform_ver == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_device_get_profile(capmgr_device_h device, char** profile) {
-  if (!device || !profile)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *profile = strdup(device->profile.c_str());
-  if (*profile == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_device_get_sw_ver(capmgr_device_h device,
-    char** sw_ver) {
-  if (!device || !sw_ver)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *sw_ver = strdup(device->sw_ver.c_str());
-  if (*sw_ver == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_create(capmgr_app_control_h* app_control) {
-  if (!app_control)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  try {
-    struct capmgr_app_control_s* control = new struct capmgr_app_control_s;
-    control->b = bundle_create();
-    if (!control->b) {
-      delete control;
-      return CAPMGR_ERROR_OUT_OF_MEMORY;
-    }
-    int r = aul_svc_set_operation(control->b, AUL_SVC_OPERATION_DEFAULT);
-    if (r != AUL_SVC_RET_OK) {
-      bundle_free(control->b);
-      delete control;
-      return CAPMGR_ERROR_OUT_OF_MEMORY;
-    }
-    *app_control = control;
-  } catch (const std::bad_alloc& e) {
-    LOG(ERROR) << e.what();
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-  }
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_clone(const capmgr_app_control_h app_control,
-    capmgr_app_control_h* app_control_clone) {
-  if (!app_control || !app_control_clone)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  try {
-    struct capmgr_app_control_s* clone = new struct capmgr_app_control_s;
-
-    int ret = capmgr_device_clone(app_control->device, &clone->device);
-    if (ret != CAPMGR_ERROR_NONE) {
-      delete clone;
-      return CAPMGR_ERROR_OUT_OF_MEMORY;
-    }
-
-    clone->b = bundle_dup(app_control->b);
-    if (!clone->b) {
-      capmgr_app_control_destroy(clone);
-      return CAPMGR_ERROR_OUT_OF_MEMORY;
-    }
-
-    *app_control_clone = clone;
-  } catch (const std::bad_alloc& e) {
-    LOG(ERROR) << e.what();
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-  }
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_destroy(capmgr_app_control_h app_control) {
-  if (!app_control)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  capmgr_device_destroy(app_control->device);
-  bundle_free(app_control->b);
-  delete app_control;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_get_operation(capmgr_app_control_h app_control,
-    char** operation) {
-  if (!app_control || !operation)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  const char* val = aul_svc_get_operation(app_control->b);
-  if (!val)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *operation = strdup(val);
-  if (*operation == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_get_uri(capmgr_app_control_h app_control,
-    char** uri) {
-  if (!app_control || !uri)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  const char* val = aul_svc_get_uri(app_control->b);
-  if (!val)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *uri = strdup(val);
-  if (*uri == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_get_mime(capmgr_app_control_h app_control,
-    char** mime) {
-  if (!app_control || !mime)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  const char* val = aul_svc_get_mime(app_control->b);
-  if (!val)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *mime = strdup(val);
-  if (*mime == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_get_appid(capmgr_app_control_h app_control,
-    char** appid) {
-  if (!app_control || !appid)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  const char* val = aul_svc_get_appid(app_control->b);
-  if (!val)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *appid = strdup(val);
-  if (*appid == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_get_extra_data(capmgr_app_control_h app_control,
-    const char* key, char** value) {
-  if (!app_control || !key || !value)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  // TODO(jeremy.jang): handle reserved key
-
-  const char* val = aul_svc_get_data(app_control->b, key);
-  if (!val) {
-    LOG(ERROR) << "There is no extra data of key(" << key << ")";
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-  }
-
-  *value = strdup(val);
-  if (*value == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_set_device(capmgr_app_control_h app_control,
-    const capmgr_device_h device) {
-  if (!app_control || !device)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  int ret = capmgr_device_clone(device, &app_control->device);
-  if (ret != CAPMGR_ERROR_NONE)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_set_operation(capmgr_app_control_h app_control,
-    const char* operation) {
-  if (!app_control || !operation)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  int r = aul_svc_set_operation(app_control->b, operation);
-  if (r != AUL_SVC_RET_OK)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_set_uri(capmgr_app_control_h app_control,
-    const char* uri) {
-  if (!app_control || !uri)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  int r = aul_svc_set_uri(app_control->b, uri);
-  if (r != AUL_SVC_RET_OK)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_set_mime(capmgr_app_control_h app_control,
-    const char* mime) {
-  if (!app_control || !mime)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  int r = aul_svc_set_mime(app_control->b, mime);
-  if (r != AUL_SVC_RET_OK)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_set_appid(capmgr_app_control_h app_control,
-    const char* appid) {
-  if (!app_control || !appid)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  int r = aul_svc_set_appid(app_control->b, appid);
-  if (r != AUL_SVC_RET_OK)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_add_extra_data(capmgr_app_control_h app_control,
-    const char* key, const char* value) {
-  if (!app_control || !key || !value)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  // TODO(jeremy.jang): handle reserved key
-
-  int r = aul_svc_add_data(app_control->b, key, value);
-  if (r != AUL_SVC_RET_OK)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_app_control_remove_extra_data(capmgr_app_control_h app_control,
-    const char* key) {
-  if (!app_control || !key)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  // TODO(jeremy.jang): handle reserved key
-
-  int r = bundle_del(app_control->b, key);
-  if (r != BUNDLE_ERROR_NONE)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-struct cbdata {
-  capmgr_app_control_h request;
-  capmgr_app_control_reply_cb cb;
-  void* user_data;
-};
-
-void capmgr_dbus_callback(GVariant* result, void* user_data) {
-  LOG(DEBUG) << "Dbus callback for client called";
-
-  // TODO(jeremy.jang): some data maybe returned
-  GVariantIter* iter;
-  guchar* data;
-  guint len;
-  g_variant_get(result, "(ayu)", &iter, &len);
-  if (!iter)
-    LOG(ERROR) << "Some error occurred";
-
-  data = reinterpret_cast<guchar*>(g_try_malloc(len));
-  if (!data) {
-    LOG(ERROR) << "Out of memory";
-    return;
-  }
-
-  for (unsigned int i = 0; i < len; i++) {
-    if (!g_variant_iter_loop(iter, "y", &data[i])) {
-      LOG(ERROR) << "Failed to get data from GVariant!";
-      break;
-    }
-  }
-  g_variant_iter_free(iter);
-
-  struct cbdata* cbdata = reinterpret_cast<struct cbdata*>(user_data);
-  struct capmgr_app_control_s* reply = new struct capmgr_app_control_s;
-  reply->b = bundle_decode(data, len);
-  if (!reply->b) {
-    LOG(ERROR) << "Invalid bundle data!";
-    capmgr_app_control_destroy(cbdata->request);
-    delete cbdata;
-    return;
-  }
-  reply->device = cbdata->request->device;
-
-  // TODO(jeremy.jang): need to receive aul_svc result code
-  cbdata->cb(cbdata->request, reply, CAPMGR_APP_CONTROL_RESULT_OK,
-      cbdata->user_data);
-
-  capmgr_app_control_destroy(cbdata->request);
-  delete cbdata;
-}
-
-API int capmgr_app_control_send(capmgr_app_control_h app_control,
-    capmgr_app_control_reply_cb cb, void* user_data) {
-  if (!app_control || !app_control->device || !cb)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  bundle_raw* raw;
-  int len;
-  int r = bundle_encode(app_control->b, &raw, &len);
-  if (r != BUNDLE_ERROR_NONE) {
-    LOG(ERROR) << "Failed to encode bundle: " << r;
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-  }
-
-  // send app_control
-  GVariantBuilder* array_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
-  for (int i = 0; i < len; i++)
-    g_variant_builder_add(array_builder, "y", raw[i]);
-  GVariant* gv = g_variant_new("(sayu)",
-      app_control->device->device_id.c_str(), array_builder, len);
-  g_variant_builder_unref(array_builder);
-  bundle_free_encoded_rawdata(&raw);
-  if (!gv) {
-    LOG(ERROR) << "Failed to create GVariant";
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-  }
-  g_variant_ref_sink(gv);
-
-  capmgr_app_control_h clone;
-  r = capmgr_app_control_clone(app_control, &clone);
-  if (r != CAPMGR_ERROR_NONE) {
-    LOG(ERROR) << "Failed to clone app control request: " << r;
-    return r;
-  }
-
-  struct cbdata* cbdata = new struct cbdata;
-  cbdata->request = clone;
-  cbdata->cb = cb;
-  cbdata->user_data = user_data;
-
-  if (!capmgr::ProxyCallAsync("SendRemoteAppControl", gv, capmgr_dbus_callback,
-        cbdata)) {
-    LOG(ERROR) << "Failed to dbus method call";
-    delete cbdata;
-    capmgr_app_control_destroy(clone);
-    g_variant_unref(gv);
-    // errcode?
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-  }
-
-  g_variant_unref(gv);
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_package_info_get_pkgid(capmgr_package_info_h remote_package_info,
-    char** pkgid) {
-  if (!remote_package_info || !pkgid ||
-      remote_package_info->pkgid.empty())
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *pkgid = strdup(remote_package_info->pkgid.c_str());
-  if (*pkgid == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_package_info_get_label(capmgr_package_info_h remote_package_info,
-    char** label) {
-  if (!remote_package_info || !label ||
-      remote_package_info->label.empty())
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *label = strdup(remote_package_info->label.c_str());
-  if (*label == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_package_info_get_version(
-    capmgr_package_info_h remote_package_info, char** version) {
-  if (!remote_package_info || !version ||
-      remote_package_info->version.empty())
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  *version = strdup(remote_package_info->version.c_str());
-  if (*version == nullptr)
-    return CAPMGR_ERROR_OUT_OF_MEMORY;
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_package_info_foreach_packages(const capmgr_device_h device,
-    capmgr_package_info_foreach_package_cb cb,
-    void* user_data) {
-  std::map<std::string, capmgr_package_info_s> pkg_map;
-
-  if (!cb)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  std::unique_ptr<capmgr::SQLConnection> sql_conn(
-      new capmgr::SQLiteConnection(kDBPath, true));
-
-  const char kQueryForeachPackages[] =
-      "SELECT appid, pkgid, label, version FROM remote_app_info WHERE "
-      "device_id = ?";
-
-  std::shared_ptr<capmgr::SQLStatement> stmt = sql_conn->PrepareStatement(
-      kQueryForeachPackages);
-  if (!stmt)
-    return CAPMGR_ERROR_IO_ERROR;
-
-  if (stmt->BindString(1, device->device_id)) {
-    while (stmt->Step() == capmgr::SQLStatement::StepResult::ROW) {
-      struct capmgr_package_info_s info;
-      std::string appid;
-      int idx = 0;
-      appid = stmt->GetColumnString(idx++);
-      info.pkgid = stmt->GetColumnString(idx++);
-      info.label = stmt->GetColumnString(idx++);
-      info.version = stmt->GetColumnString(idx++);
-
-      auto search_info = pkg_map.find(appid);
-      if (search_info != pkg_map.end()) {
-        info.appid_list.emplace_back(appid);
-        pkg_map.emplace(appid, info);
-      } else {
-        struct capmgr_package_info_s found = search_info->second;
-        found.appid_list.emplace_back(appid);
-      }
-    }
-  }
-
-  for (auto it = pkg_map.begin(); it != pkg_map.end(); it++) {
-    struct capmgr_package_info_s info = it->second;
-    if (cb(&info, user_data))
-      break;
-  }
-
-  return CAPMGR_ERROR_NONE;
-}
-
-API int capmgr_package_info_foreach_applications(
-    const capmgr_package_info_h remote_pkg_info,
-    capmgr_package_info_foreach_app_cb cb,
-    void* user_data) {
-  if (!cb)
-    return CAPMGR_ERROR_INVALID_PARAMETER;
-
-  return CAPMGR_ERROR_NONE;
-}
diff --git a/src/client/dbus.cc b/src/client/dbus.cc
deleted file mode 100644 (file)
index 491760d..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by a apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include "client/dbus.h"
-
-#include <glib.h>
-#include <gio/gio.h>
-
-#include "common/utils/logging.h"
-
-namespace {
-
-const char kDBusServiceName[] = "org.tizen.capmgr";
-const char kDBusObjectPath[] = "/org/tizen/capmgr";
-const char kDBusInterfaceName[] = "org.tizen.capmgr";
-
-struct cbdata {
-  capmgr::DBusCallback cb;
-  void* user_data;
-};
-
-void MethodCallback(GObject* source_object, GAsyncResult* res,
-    gpointer user_data) {
-  LOG(DEBUG) << "Got a response from capmgr";
-  GDBusProxy* proxy = reinterpret_cast<GDBusProxy*>(source_object);
-  GError* error = nullptr;
-  GVariant* result = g_dbus_proxy_call_finish(proxy, res, &error);
-
-  if (error) {
-    LOG(ERROR) << "g_dbus_proxy_call_finish() failed: " << error->message;
-    return;
-  }
-
-  struct cbdata* cbdata = reinterpret_cast<struct cbdata*>(user_data);
-  cbdata->cb(result, cbdata->user_data);
-  delete cbdata;
-}
-
-}  // namespace
-
-namespace capmgr {
-
-bool ProxyCallAsync(const char* method, GVariant* params, DBusCallback cb,
-    void* user_data) {
-  GError* error = nullptr;
-  GDBusConnection* conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, nullptr, &error);
-  if (!conn || error) {
-    LOG(ERROR) << "g_bus_get_sync() failed: " << error->message;
-    return false;
-  }
-  GDBusProxy* proxy = g_dbus_proxy_new_sync(conn,
-      G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, nullptr,
-      kDBusServiceName, kDBusObjectPath, kDBusInterfaceName, nullptr,
-      &error);
-  if (!proxy || error) {
-    LOG(ERROR) << "g_dbus_proxy_new_sync() failed: " << error->message;
-    g_object_unref(conn);
-    return false;
-  }
-
-  // will be freed at MethodCallback()
-  struct cbdata* cbdata = new struct cbdata;
-  cbdata->cb = cb;
-  cbdata->user_data = user_data;
-
-  g_dbus_proxy_call(proxy, method,
-      params, G_DBUS_CALL_FLAGS_NONE, -1, nullptr, MethodCallback, cbdata);
-
-  g_object_unref(proxy);
-  g_dbus_connection_flush_sync(conn, nullptr, nullptr);
-  g_object_unref(conn);
-
-  return true;
-}
-
-}  // namespace capmgr
diff --git a/src/client/dbus.h b/src/client/dbus.h
deleted file mode 100644 (file)
index 206a86e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by a apache 2.0 license that can be
-// found in the LICENSE file.
-
-#ifndef CLIENT_DBUS_H_
-#define CLIENT_DBUS_H_
-
-#include <glib.h>
-
-#include "client/include/capmgr.h"
-
-namespace capmgr {
-
-typedef void (*DBusCallback)(GVariant* result, void* user_data);
-
-bool ProxyCallAsync(const char* method, GVariant* params, DBusCallback cb,
-    void* user_data);
-
-}  // namespace capmgr
-
-#endif  // CLIENT_DBUS_H_
diff --git a/src/client/include/capmgr.h b/src/client/include/capmgr.h
deleted file mode 100644 (file)
index 9479316..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by a apache 2.0 license that can be
-// found in the LICENSE file.
-
-#ifndef CLIENT_INCLUDE_CAPMGR_H_
-#define CLIENT_INCLUDE_CAPMGR_H_
-
-#include <tizen.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * @brief
- */
-typedef enum {
-  CAPMGR_ERROR_NONE = TIZEN_ERROR_NONE,
-  CAPMGR_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,
-  CAPMGR_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,
-  CAPMGR_ERROR_IO_ERROR = TIZEN_ERROR_IO_ERROR,
-} capmgr_error_e;
-
-typedef enum {
-  CAPMGR_APP_CONTROL_RESULT_OK,
-} capmgr_app_control_result_e;
-
-/**
- * @brief
- */
-typedef struct capmgr_device_s* capmgr_device_h;
-
-/**
- * @brief
- */
-typedef struct capmgr_app_control_s* capmgr_app_control_h;
-
-/**
- * @brief
- */
-typedef struct capmgr_package_info_s* capmgr_package_info_h;
-
-/**
- * @brief
- */
-typedef int (*capmgr_device_foreach_cb)(const capmgr_device_h device,
-    void* user_data);
-
-/**
- * @brief
- */
-typedef int (*capmgr_app_control_reply_cb)(const capmgr_app_control_h request,
-    const capmgr_app_control_h reply, capmgr_app_control_result_e result,
-    void* user_data);
-
-/**
- * @brief
- */
-typedef int (*capmgr_package_info_foreach_package_cb)(
-    const capmgr_package_info_h remote_package_info, void* user_data);
-
-/**
- * @brief
- */
-typedef int (*capmgr_package_info_foreach_app_cb)(
-    const char* appid, void* user_data);
-
-/**
- * @brief
- */
-int capmgr_device_foreach_devices(capmgr_device_foreach_cb cb,
-    void* user_data);
-
-/**
- * @brief
- */
-int capmgr_device_clone(const capmgr_device_h device,
-    capmgr_device_h* device_clone);
-
-/**
- * @brief
- */
-int capmgr_device_destroy(capmgr_device_h device);
-
-/**
- * @brief
- */
-int capmgr_device_get_device_id(capmgr_device_h device, char** device_id);
-
-/**
- * @brief
- */
-int capmgr_device_get_model_name(capmgr_device_h device, char** model_name);
-
-/**
- * @brief
- */
-int capmgr_device_get_device_name(capmgr_device_h device, char** device_name);
-
-/**
- * @brief
- */
-int capmgr_device_get_platform_ver(capmgr_device_h device, char** platform_ver);
-
-/**
- * @brief
- */
-int capmgr_device_get_profile(capmgr_device_h device, char** profile);
-
-/**
- * @brief
- */
-int capmgr_device_get_sw_ver(capmgr_device_h device, char** sw_ver);
-
-/**
- * @brief
- */
-int capmgr_device_get_platform_version(capmgr_device_h device,
-    char** platform_version);
-
-/**
- * @brief
- */
-int capmgr_app_control_create(capmgr_app_control_h* app_control);
-
-/**
- * @brief
- */
-int capmgr_app_control_clone(const capmgr_app_control_h app_control,
-    capmgr_app_control_h* app_control_clone);
-
-/**
- * @brief
- */
-int capmgr_app_control_destroy(capmgr_app_control_h app_control);
-
-/**
- * @brief
- */
-int capmgr_app_control_get_device(capmgr_app_control_h app_control,
-    capmgr_device_h* device);
-
-/**
- * @brief
- */
-int capmgr_app_control_get_operation(capmgr_app_control_h app_control,
-    char** operation);
-
-/**
- * @brief
- */
-int capmgr_app_control_get_uri(capmgr_app_control_h app_control,
-    char** uri);
-
-/**
- * @brief
- */
-int capmgr_app_control_get_mime(capmgr_app_control_h app_control,
-    char** mime);
-
-/**
- * @brief
- */
-int capmgr_app_control_get_appid(capmgr_app_control_h app_control,
-    char** appid);
-
-/**
- * @brief
- */
-int capmgr_app_control_get_extra_data(capmgr_app_control_h app_control,
-    const char* key, char** value);
-
-/**
- * @brief
- */
-int capmgr_app_control_set_device(capmgr_app_control_h app_control,
-    const capmgr_device_h device);
-
-/**
- * @brief
- */
-int capmgr_app_control_set_operation(capmgr_app_control_h app_control,
-    const char* operation);
-
-/**
- * @brief
- */
-int capmgr_app_control_set_uri(capmgr_app_control_h app_control,
-    const char* uri);
-
-/**
- * @brief
- */
-int capmgr_app_control_set_mime(capmgr_app_control_h app_control,
-    const char* mime);
-
-/**
- * @brief
- */
-int capmgr_app_control_set_appid(capmgr_app_control_h app_control,
-    const char* appid);
-
-/**
- * @brief
- */
-int capmgr_app_control_add_extra_data(capmgr_app_control_h app_control,
-    const char* key, const char* value);
-
-/**
- * @brief
- */
-int capmgr_app_control_remove_extra_data(capmgr_app_control_h app_control,
-    const char* key);
-
-/**
- * @brief
- */
-int capmgr_app_control_send(capmgr_app_control_h app_control,
-    capmgr_app_control_reply_cb cb, void* user_data);
-
-/**
- * @brief
- */
-int capmgr_package_info_foreach_packages(const capmgr_device_h device,
-    capmgr_package_info_foreach_package_cb cb, void* user_data);
-
-/**
- * @brief
- */
-int capmgr_package_info_foreach_applications(
-    const capmgr_package_info_h remote_package_info,
-    capmgr_package_info_foreach_app_cb cb, void* user_data);
-
-/**
- * @brief
- */
-int capmgr_package_info_get_pkgid(capmgr_package_info_h remote_package_info,
-    char** pkgid);
-
-/**
- * @brief
- */
-int capmgr_package_info_get_label(capmgr_package_info_h remote_package_info,
-    char** label);
-
-
-/**
- * @brief
- */
-int capmgr_package_info_get_version(capmgr_package_info_h remote_package_info,
-    char** version);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // CLIENT_INCLUDE_CAPMGR_H_
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
deleted file mode 100644 (file)
index 27cab0b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SET(CAPMGR_TEST "capmgr-test")
-
-AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} TOOLS_SRCS)
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../src/)
-
-ADD_EXECUTABLE(${CAPMGR_TEST} ${TOOLS_SRCS})
-
-APPLY_PKG_CONFIG(${CAPMGR_TEST} PUBLIC
-  GIO_DEPS
-  GLIB_DEPS
-  Boost
-)
-
-TARGET_LINK_LIBRARIES(${CAPMGR_TEST} PUBLIC ${TARGET_LIB_CLIENT})
-
-INSTALL(TARGETS ${CAPMGR_TEST} DESTINATION bin)
diff --git a/tools/capmgr_test.cc b/tools/capmgr_test.cc
deleted file mode 100644 (file)
index 4d34d83..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-// Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by a apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include <glib.h>
-#include <gio/gio.h>
-
-#include <boost/program_options.hpp>
-
-#include <iostream>
-
-#include "client/include/capmgr.h"
-
-namespace bpo = boost::program_options;
-
-namespace {
-
-const char kDBusServiceName[] = "org.tizen.capmgr";
-const char kDBusObjectPath[] = "/org/tizen/capmgr";
-const char kDBusInterfaceName[] = "org.tizen.capmgr";
-
-struct cbdata {
-  capmgr_device_h* device;
-  std::string device_id;
-};
-
-class Client {
- public:
-  Client();
-  ~Client();
-
-  void CapExchange(GVariant* params);
-  void SendAppControl(const std::string& device_id, const std::string& appid);
-  void SendFile(const std::string& device_id, const std::string& file_path);
-  void ListDevices();
-
- private:
-  GVariant* ProxyCallSync(const char* method, GVariant* params);
-  void WaitForResult();
-  void Quit();
-
-  static int AppControlCb(const capmgr_app_control_h request,
-      const capmgr_app_control_h reply, capmgr_app_control_result_e result,
-      void* user_data);
-
-  GMainLoop* loop_;
-  GDBusConnection* conn_;
-  GDBusProxy* proxy_;
-};
-
-int DeviceForeachCb(const capmgr_device_h device, void* user_data) {
-  char* device_id = nullptr;
-  char* model_name = nullptr;
-  char* device_name = nullptr;
-  char* platform_ver = nullptr;
-  char* profile = nullptr;
-  char* sw_ver = nullptr;
-
-  int ret = capmgr_device_get_device_id(device, &device_id);
-  if (ret != CAPMGR_ERROR_NONE)
-    std::cout << "Failed to get device id" << std::endl;
-
-  ret = capmgr_device_get_model_name(device, &model_name);
-  if (ret != CAPMGR_ERROR_NONE)
-    std::cout << "Failed to get model name" << std::endl;
-
-  ret = capmgr_device_get_device_name(device, &device_name);
-  if (ret != CAPMGR_ERROR_NONE)
-    std::cout << "Failed to get device name" << std::endl;
-
-  ret = capmgr_device_get_platform_ver(device, &platform_ver);
-  if (ret != CAPMGR_ERROR_NONE)
-    std::cout << "Failed to get platform version" << std::endl;
-
-  ret = capmgr_device_get_profile(device, &profile);
-  if (ret != CAPMGR_ERROR_NONE)
-    std::cout << "Failed to get profile" << std::endl;
-
-  ret = capmgr_device_get_sw_ver(device, &sw_ver);
-  if (ret != CAPMGR_ERROR_NONE)
-    std::cout << "Failed to get sw version" << std::endl;
-
-  if (user_data) {
-    struct cbdata* cbdata = reinterpret_cast<struct cbdata*>(user_data);
-    if (!strcmp(device_id, cbdata->device_id.c_str())) {
-      ret = capmgr_device_clone(device, cbdata->device);
-      if (ret != CAPMGR_ERROR_NONE)
-        std::cout << "capmgr_device_clone() failed: " << ret << std::endl;
-    }
-  } else {
-    std::cout << "==============================================" << std::endl;
-    std::cout << "DeviceID: " << device_id << std::endl
-              << "Model name: " << model_name << std::endl
-              << "Device name: " << device_name << std::endl
-              << "Platform version: " << platform_ver << std::endl
-              << "Profile: " << profile << std::endl
-              << "SW version: " << sw_ver << std::endl;
-  }
-
-  free(device_id);
-  free(model_name);
-  free(device_name);
-  free(platform_ver);
-  free(profile);
-  free(sw_ver);
-
-  return 0;
-}
-
-Client::Client() {
-  loop_ = g_main_loop_new(nullptr, FALSE);
-
-  GError* error = nullptr;
-  conn_ = g_bus_get_sync(G_BUS_TYPE_SYSTEM, nullptr, &error);
-  if (!conn_ || error) {
-    std::cout << "g_bus_get_sync() failed: " << error->message << std::endl;
-    exit(1);
-  }
-
-  proxy_ = g_dbus_proxy_new_sync(conn_, G_DBUS_PROXY_FLAGS_NONE, nullptr,
-      kDBusServiceName, kDBusObjectPath, kDBusInterfaceName, nullptr, &error);
-  if (!proxy_ || error) {
-    std::cout << "g_dbus_proxy_new_sync() failed: " << error->message
-              << std::endl;
-    exit(1);
-  }
-}
-
-Client::~Client() {
-  g_object_unref(proxy_);
-  g_dbus_connection_flush_sync(conn_, nullptr, nullptr);
-  g_object_unref(conn_);
-  g_main_loop_unref(loop_);
-}
-
-void Client::CapExchange(GVariant* params) {
-  GVariant* ret = ProxyCallSync("ExchangeCapabilities", params);
-  if (!ret)
-    return;
-
-  g_variant_unref(ret);
-}
-
-void Client::SendAppControl(const std::string& device_id,
-    const std::string& appid) {
-  if (device_id.empty()) {
-    std::cout << "Target device is missing!" << std::endl;
-    return;
-  }
-
-  capmgr_device_h device = nullptr;
-  struct cbdata cbdata = {&device, device_id};
-  int ret = capmgr_device_foreach_devices(DeviceForeachCb, &cbdata);
-  if (ret != CAPMGR_ERROR_NONE) {
-    std::cout << "capmgr_device_foreach_devices() failed: " << ret
-              << std::endl;
-    return;
-  }
-
-  if (*cbdata.device == nullptr) {
-    std::cout << "There is no such device!" << std::endl;
-    return;
-  }
-
-  capmgr_app_control_h ac;
-  ret = capmgr_app_control_create(&ac);
-  if (ret != CAPMGR_ERROR_NONE) {
-    std::cout << "capmgr_app_control_create() failed: " << ret << std::endl;
-    capmgr_device_destroy(device);
-    return;
-  }
-
-  ret = capmgr_app_control_set_device(ac, device);
-  if (ret != CAPMGR_ERROR_NONE) {
-    std::cout << "capmgr_app_control_set_device() failed: " << ret
-              << std::endl;
-    capmgr_device_destroy(device);
-    capmgr_app_control_destroy(ac);
-    return;
-  }
-
-  ret = capmgr_app_control_set_appid(ac, appid.c_str());
-  if (ret != CAPMGR_ERROR_NONE) {
-    std::cout << "capmgr_app_control_set_appid() failed: " << ret
-              << std::endl;
-    capmgr_device_destroy(device);
-    capmgr_app_control_destroy(ac);
-    return;
-  }
-
-  ret = capmgr_app_control_send(ac, &Client::AppControlCb, this);
-  if (ret != CAPMGR_ERROR_NONE)
-    std::cout << "capmgr_app_control_set_appid() failed: " << ret
-              << std::endl;
-
-  capmgr_device_destroy(device);
-  capmgr_app_control_destroy(ac);
-
-  WaitForResult();
-}
-
-void Client::ListDevices() {
-  int ret = capmgr_device_foreach_devices(DeviceForeachCb, nullptr);
-  if (ret != CAPMGR_ERROR_NONE)
-    std::cout << "capmgr_device_foreach_devices() failed: " << ret
-              << std::endl;
-}
-
-void Client::SendFile(const std::string& device_id,
-    const std::string& file_path) {
-  if (device_id.empty()) {
-    std::cout << "Target device is missing!" << std::endl;
-    return;
-  }
-
-  if (file_path.empty()) {
-    std::cout << "File path is missing!" << std::endl;
-    return;
-  }
-
-  std::cout << "Send file " << file_path << " to " << device_id << std::endl;
-
-  GVariant* params = g_variant_new("(ss)", device_id.c_str(),
-                       file_path.c_str());
-  if (!params) {
-    std::cout << "out of memory" << std::endl;
-    return;
-  }
-
-  GVariant* ret = ProxyCallSync("SendFile", params);
-
-  g_object_unref(params);
-  g_object_unref(ret);
-}
-
-GVariant* Client::ProxyCallSync(const char* method, GVariant* params) {
-  GError* error = nullptr;
-  GVariant* ret = g_dbus_proxy_call_sync(proxy_, method,
-      params, G_DBUS_CALL_FLAGS_NONE, -1, nullptr, &error);
-  if (error) {
-    std::cout << "g_dbus_proxy_call_sync of " << method << " failed: "
-      << error->message << std::endl;
-  }
-  return ret;
-}
-
-void Client::WaitForResult() {
-  g_main_loop_run(loop_);
-}
-
-void Client::Quit() {
-  g_main_loop_quit(loop_);
-}
-
-int Client::AppControlCb(const capmgr_app_control_h request,
-    const capmgr_app_control_h reply, capmgr_app_control_result_e result,
-    void* user_data) {
-  std::cout << "AppControlCb called" << std::endl;
-
-  char* data;
-  int ret = capmgr_app_control_get_extra_data(reply, "REPLY", &data);
-  if (ret != CAPMGR_ERROR_NONE) {
-    std::cout << "Failed to get extra data from appcontrol reply: " << ret
-              << std::endl;
-  } else {
-    std::cout << "Get reply from remote app: " << data << std::endl;
-    free(data);
-  }
-
-  Client* client = static_cast<Client*>(user_data);
-  client->Quit();
-  return 0;
-}
-
-}  // namespace
-
-int main(int argc, char* argv[]) {
-  bpo::options_description options("Allowed options");
-  bpo::variables_map opt_map;
-
-  ::Client client;
-  try {
-    options.add_options()
-        ("help,h", "help")
-        ("capexchange,c", "capability exchange")
-        ("device,d", bpo::value<std::string>(), "device id")
-        ("send-appcontrol,s", bpo::value<std::string>(),
-            "send remote app-control")
-        ("list-devices,l", "list remote devices")
-        ("send-file,f", bpo::value<std::string>(), "send file");
-    bpo::store(bpo::parse_command_line(argc, argv, options), opt_map);
-
-    if (opt_map.count("help"))
-      std::cout << options << std::endl;
-    else if (opt_map.count("capexchange"))
-      client.CapExchange(nullptr);
-    else if (opt_map.count("send-appcontrol"))
-      client.SendAppControl(opt_map["device"].as<std::string>(),
-          opt_map["send-appcontrol"].as<std::string>());
-    else if (opt_map.count("list-devices"))
-      client.ListDevices();
-    else if (opt_map.count("send-file"))
-      client.SendFile(opt_map["device"].as<std::string>(),
-          opt_map["send-file"].as<std::string>());
-    else
-      std::cout << options << std::endl;
-  } catch (...) {
-    std::cout << "Exception occured" << std::endl;
-  }
-
-  return 0;
-}