if (conn_admin_listener_.GetState() == ConnectionState::Connected)
return true;
- if (!activator_.Connect())
+ if (!activator_.Connect(raw_pc_, "install"))
return false;
try {
if (conn_info_listener_.GetState() == ConnectionState::Connected)
return true;
- if (!activator_.Connect())
+ if (!activator_.Connect(raw_pc_, "getsize"))
return false;
try {
if (conn_cache_listener_.GetState() == ConnectionState::Connected)
return true;
- if (!activator_.Connect())
+ if (!activator_.Connect(raw_pc_, "clearcache"))
return false;
try {
if (conn_delayed_result_listener_.GetState() == ConnectionState::Connected)
return true;
- if (!activator_.Connect())
+ if (!activator_.Connect(raw_pc_, "install"))
return false;
try {
return raw_pc_;
}
-bool Connector::Activator::Connect() {
- if (!Create())
- return false;
-
- SetTimeout(60 * 1000);
-
- int retry_cnt = 3;
- do {
- int ret = TryConnect();
- if (ret == 0) {
- break;
- } else if (ret < -1) {
- _E("Maybe peer not launched or peer dead. path: %s, fd: %d",
- PACKAGE_MANAGER_SOCKET_PATH, fd_);
- // If requester is root, don't wait
- if (getuid() == 0)
- return false;
-
- usleep(100 * 1000);
- --retry_cnt;
- } else if (ret < 0) {
- _E("Failed to connect to socket: %s, fd: %d",
- PACKAGE_MANAGER_SOCKET_PATH, fd_);
- return false;
- }
- } while (retry_cnt > 0);
+bool Connector::Activator::Connect(pkgmgr_client_t* pc, std::string method) {
+ GVariant *result;
+ int ret = PKGMGR_R_ECOMM;
- if (retry_cnt == 0) {
- _E("Failed to connect with server");
- return false;
- }
+ ret = pkgmgr_client_connection_send_request(pc, method.c_str(),
+ g_variant_new("()"), &result);
+ if (ret != PKGMGR_R_OK) {
+ _E("request failed: %d", ret);
+ return false;
+ }
- return ReceiveReady();
+ g_variant_get(result, "(i)", &ret);
+ g_variant_unref(result);
+ return ret == PKGMGR_R_OK ? true : false;
}
+//bool Connector::Activator::Connect() {
+// if (!Create())
+// return false;
+//
+// SetTimeout(60 * 1000);
+//
+// int retry_cnt = 3;
+// do {
+// int ret = TryConnect();
+// if (ret == 0) {
+// break;
+// } else if (ret < -1) {
+// _E("Maybe peer not launched or peer dead. path: %s, fd: %d",
+// PACKAGE_MANAGER_SOCKET_PATH, fd_);
+// // If requester is root, don't wait
+// if (getuid() == 0)
+// return false;
+//
+// usleep(100 * 1000);
+// --retry_cnt;
+// } else if (ret < 0) {
+// _E("Failed to connect to socket: %s, fd: %d",
+// PACKAGE_MANAGER_SOCKET_PATH, fd_);
+// return false;
+// }
+// } while (retry_cnt > 0);
+//
+// if (retry_cnt == 0) {
+// _E("Failed to connect with server");
+// return false;
+// }
+//
+// return ReceiveReady();
+//}
+
bool Connector::Activator::Create() {
if (fd_ != -1)
return true;