コード例 #1
0
ファイル: tcp_fallback_select.c プロジェクト: nabto/unabto
void unabto_tcp_fallback_write_ready(nabto_connect* con) {
    if (con->state != CS_IDLE) {
        unabto_tcp_fallback_state st = con->tcpFallbackConnectionState;
        unabto_tcp_fallback_connection* fbConn = &fbConns[nabto_connection_index(con)];
        if (st > UTFS_IDLE && st < UTFS_CLOSED && fbConn->socket != INVALID_SOCKET) {
            
            if (st == UTFS_CONNECTING) {
                unabto_tcp_fallback_handle_connect(con);
            }
            if (st >= UTFS_CONNECTED) {
                bool status;
                do {
                    status = unabto_tcp_fallback_handle_write(con);
                } while (status);
            } 
        }
    }
}
コード例 #2
0
unabto_tcp_fallback_error unabto_tcp_fallback_write(nabto_connect* con, uint8_t* buffer, size_t bufferLength) {

    unabto_tcp_fallback_connection* fbConn = &fbConns[nabto_connection_index(con)];
    unabto_tcp_fallback_error status = UTFE_OK;

    if (fbConn->sendBufferLength == 0) {
        memcpy(fbConn->sendBuffer, buffer, bufferLength);
        fbConn->sendBufferLength = bufferLength;
        fbConn->sendBufferSent = 0;
        unabto_tcp_fallback_handle_write(con);
        status = UTFE_OK;
        NABTO_LOG_TRACE((PRI_tcp_fb "Succesful queue of tcp fallback packet.", TCP_FB_ARGS(con)));
    } else {
        NABTO_LOG_TRACE((PRI_tcp_fb "Could not enqueue tcp fallback packet.", TCP_FB_ARGS(con)));
        status = UTFE_QUEUE_FULL;
    }

    return status;
}
コード例 #3
0
void unabto_tcp_fallback_select_write_sockets(fd_set* writeFds) {
    int i;
    for (i = 0; i < NABTO_CONNECTIONS_SIZE; i++) {
        nabto_connect* con = &connections[i];

        if (con->state != CS_IDLE) {
            unabto_tcp_fallback_state st = con->tcpFallbackConnectionState;
            unabto_tcp_fallback_connection* fbConn = &fbConns[nabto_connection_index(con)];
            if (st > UTFS_IDLE && st < UTFS_CLOSED && fbConn->socket != INVALID_SOCKET) {
                if (FD_ISSET(fbConn->socket, writeFds)) {
                    if (st == UTFS_CONNECTING) {
                        unabto_tcp_fallback_handle_connect(con);
                    } else if (st >= UTFS_CONNECTED) {
                        unabto_tcp_fallback_handle_write(con);
                    }
                } 
            }
        }
    }
}