gboolean ClientChannel::OnDataReceived(GIOChannel* channel, GIOCondition cond,
gpointer user_data) {
auto* handle = static_cast<ClientChannel*>(user_data);
- int req_id = -1;
- int ret = handle->Receive(&req_id, sizeof(int));
- if (ret != 0)
- _E("Failed to receive seq num");
-
- int res;
- ret = handle->Receive(&res, sizeof(int));
- if (ret != 0)
- res = -ECOMM;
+ int buf[2];
+ int ret = handle->Receive(&buf, sizeof(int) + sizeof(int));
+ if (ret != 0) {
+ _E("Failed to receive data");
+ buf[1] = -ECOMM;
+ }
+ int req_id = buf[0];
+ int res = buf[1];
_W("id(%d), pid(%d), result(%d)", req_id, handle->GetPid(), ret);
auto result_cb = handle->FindResultCb(req_id);
if (result_cb != nullptr)
int AppComSocket::ReceiveResult() {
std::lock_guard<std::recursive_mutex> lock(GetMutex());
- int res;
- int ret = ClientSocket::Receive(&res, sizeof(int));
+ int buf[2];
+ int ret = ClientSocket::Receive(&buf, sizeof(int) + sizeof(int));
if (ret != 0) {
_E("Failed to receive result data. error(%d)", ret);
return ret;
}
+ int res = buf[1];
return res;
}