예제 #1
0
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);
            } 
        }
    }
}
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);
                    }
                } 
            }
        }
    }
}