Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}