Esempio n. 1
0
qd_error_t qd_entity_set_stringf(qd_entity_t *entity, const char* attribute, const char *format, ...)
{
    // Calculate the size
    char dummy[1];
    va_list ap;
    va_start(ap, format);
    int len = vsnprintf(dummy, 1, format, ap);
    va_end(ap);

    char buf[len+1];
    va_start(ap, format);
    vsnprintf(buf, len+1, format, ap);
    va_end(ap);

    return qd_entity_set_string(entity, attribute, buf);
}
Esempio n. 2
0
qd_error_t qd_entity_refresh_connector(qd_entity_t* entity, void *impl)
{
    qd_connector_t *ct = (qd_connector_t*) impl;

    if (DEQ_SIZE(ct->conn_info_list) > 1) {
        qd_failover_item_list_t   conn_info_list = ct->conn_info_list;

        qd_failover_item_t *item = DEQ_HEAD(conn_info_list);

        //
        // As you can see we are skipping the head of the list. The
        // first item in the list is always the original connection information
        // and we dont want to display that information as part of the failover list.
        //
        int arr_length = get_failover_info_length(conn_info_list);
        char failover_info[arr_length];
        memset(failover_info, 0, sizeof(failover_info));

        item = DEQ_NEXT(item);

        while(item) {
            if (item->scheme) {
                strcat(failover_info, item->scheme);
                strcat(failover_info, "://");
            }
            if (item->host_port) {
                strcat(failover_info, item->host_port);
            }
            item = DEQ_NEXT(item);
            if (item) {
                strcat(failover_info, ", ");
            }
        }

        if (qd_entity_set_string(entity, "failoverList", failover_info) == 0)
            return QD_ERROR_NONE;
    }
    else {
        if (qd_entity_clear(entity, "failoverList") == 0)
            return QD_ERROR_NONE;
    }

    return qd_error_code();
}