Exemple #1
0
static void fwd_client_on_data(const qeocore_reader_t *reader,
                               const qeocore_data_t *data,
                               uintptr_t userdata)
{
    qeo_factory_t *factory = (qeo_factory_t *)userdata;
    qeocore_data_status_t status;
    org_qeo_system_Forwarder_t *fwd_data;
    org_qeo_system_ForwarderLocator_t fwd_locator;
    qeo_mgmt_client_locator_t locator;

    status = qeocore_data_get_status(data);
    if (QEOCORE_DATA == status) {
        fwd_data = (org_qeo_system_Forwarder_t *)qeocore_data_get_data(data);
        /* check locator */
        if ((NULL != fwd_data) && (DDS_SEQ_LENGTH(fwd_data->locator) > 0)) {
            fwd_locator = DDS_SEQ_ITEM(fwd_data->locator, 0);
            locator.type = fwd_locator.type;
            locator.port = fwd_locator.port;
            locator.address = fwd_locator.address;
            client_state_machine_eval(factory, CLIENT_EVENT_FWD_DATA_RECEIVED, &locator, fwd_data->deviceId);
        }
    }
    else if (QEOCORE_REMOVE == status) {
        fwd_data = (org_qeo_system_Forwarder_t *)qeocore_data_get_data(data);
        if (NULL != fwd_data) {
            client_state_machine_eval(factory, CLIENT_EVENT_FWD_DATA_REMOVED, NULL, fwd_data->deviceId);
        }
    }
}
Exemple #2
0
/** This callback will be called for each forwarder in the list received from the management client. */
qeo_mgmt_client_retcode_t forwarder_cb(qeo_mgmt_client_forwarder_t* forwarder, void *cookie)
{
    qeo_factory_t             *factory = (qeo_factory_t *) cookie;
    qeo_mgmt_client_locator_t *locator = NULL;
    int                       i = 0;

    /* Get the IP address and port from the qeo_mgmt_client_forwarder_t info. */
    if ((forwarder != NULL) && (forwarder->nrOfLocators > 0)) {
        qeo_log_d("received %d locators", forwarder->nrOfLocators);
        for (i = 0, locator = forwarder->locators; i < forwarder->nrOfLocators; i++, locator++) {
            qeo_log_d("locator %d", i);
            if (locator != NULL) {
                qeo_log_i("valid locator: %s:%d", locator->address, locator->port);
                if (factory->fwd.u.client.state == FWD_CLIENT_STATE_WAIT) {
                    qeo_log_i("Going to use this forwarder");
                    flags_t flags = { .forwarding_enabled = true };
                    client_state_machine_eval(factory, CLIENT_EVENT_LOC_SRV_DATA_RECEIVED, locator, forwarder->deviceID, flags);
                }
                else {
                    /* TODO: at the moment only one forwarder is taken into account. */
                    qeo_log_i("Going to ignore this forwarder as not the first in the list");
                }
                break;
            }
Exemple #3
0
/** This callback will be called for each forwarder in the list received from the management client. */
qeo_mgmt_client_retcode_t forwarder_cb(qeo_mgmt_client_forwarder_t* forwarder, void *cookie)
{
    qeo_factory_t             *factory = (qeo_factory_t *) cookie;
    qeo_mgmt_client_locator_t *locator = NULL;
    int                       i = 0;

    /* Get the IP address and port from the qeo_mgmt_client_forwarder_t info. */
    if ((forwarder != NULL) && (forwarder->nrOfLocators > 0)) {
        qeo_log_i("received %d locators", forwarder->nrOfLocators);
        for (i = 0, locator = forwarder->locators; i < forwarder->nrOfLocators; i++, locator++) {
            qeo_log_i("locator %d", i);
            if (locator != NULL) {
                qeo_log_i("valid locator");
                /* TODO: at the moment only one forwarder is taken into account. */
                if (factory->fwd.locator == NULL) {
                    client_state_machine_eval(factory, CLIENT_EVENT_LOC_SRV_DATA_RECEIVED, locator, forwarder->deviceID);
                }
            }
        }
        qeo_mgmt_client_free_forwarder(forwarder);
    }

    return QMGMTCLIENT_OK;
}
Exemple #4
0
static void fwd_client_discovery_timeout(uintptr_t userdata)
{
    qeo_factory_t *factory = (qeo_factory_t *)userdata;

    client_state_machine_eval(factory, CLIENT_EVENT_TIMEOUT, NULL, -1);
}