int Logic::getRequest(AgentActionResponsePtr &resultPtr) { int ret = ensureConnection(); if (ret != CYNARA_API_SUCCESS) return ret; ResponsePtr responsePtr = m_socketClient.getBufferedResponse(); if (responsePtr == nullptr) { AgentSocketState state = m_socketClient.waitForEvent(); switch (state) { case AgentSocketState::SS_QUITREQUEST: LOGD("Waiting interrupted. Finishing"); m_notify.snooze(); return CYNARA_API_INTERRUPTED; case AgentSocketState::SS_REQUEST: { responsePtr = m_socketClient.receiveResponseFromServer(); if (!responsePtr) { LOGW("Disconnected by cynara server."); return CYNARA_API_SERVICE_NOT_AVAILABLE; } break; } default: LOGE("Wrong state returned [" << state << "]"); return CYNARA_API_UNKNOWN_ERROR; } } AgentActionResponsePtr actionResponsePtr = std::dynamic_pointer_cast<AgentActionResponse>(responsePtr); if (!actionResponsePtr) { LOGC("Casting request to AgentActionResponse failed."); return CYNARA_API_UNKNOWN_ERROR; } LOGD("agentActionResponse: type: [%" PRIu8 "], data length: [%zu]", actionResponsePtr->type(), actionResponsePtr->data().size()); resultPtr = actionResponsePtr; return CYNARA_API_SUCCESS; }
int Logic::getRequest(AgentActionResponsePtr &resultPtr) { int ret = ensureConnection(); if (ret != CYNARA_API_SUCCESS) return ret; ResponsePtr responsePtr = m_socketClient.receiveResponseFromServer(); if (!responsePtr) { LOGW("Disconnected by cynara server."); return CYNARA_API_SERVICE_NOT_AVAILABLE; } AgentActionResponsePtr actionResponsePtr = std::dynamic_pointer_cast<AgentActionResponse>(responsePtr); if (!actionResponsePtr) { LOGC("Casting request to AgentActionResponse failed."); return CYNARA_API_UNKNOWN_ERROR; } LOGD("agentActionResponse: type: [%" PRIu8 "], data length: [%zu]", actionResponsePtr->type(), actionResponsePtr->data().size()); resultPtr = actionResponsePtr; return CYNARA_API_SUCCESS; }