Exemple #1
0
void loop_quit(loop_t* loop)
{
    if (NULL == loop)
    {
        return;
    }
    
    loop_run_inloop(loop, do_loop_quit, loop);

    return;
}
Exemple #2
0
void tcp_server_stop(tcp_server_t *server)
{
    if (NULL == server)
    {
        return;
    }
    
    loop_run_inloop(server->loop, do_tcp_server_stop, server);
    
    return;
}
Exemple #3
0
void udp_peer_destroy(udp_peer_t* peer)
{
    if (NULL == peer)
    {
        return;
    }

    loop_run_inloop(peer->loop, do_udp_peer_destroy, peer);

    return;
}
Exemple #4
0
void tcp_connection_destroy(tcp_connection_t* connection)
{
    if (NULL == connection)
    {
        return;
    }
    
    loop_run_inloop(connection->loop, do_tcp_connection_destroy, connection);

    return;
}
Exemple #5
0
int loop_update_channel(loop_t *loop, channel_t* channel)
{
    if (NULL == loop || NULL == channel)
    {
        log_error("loop_update_channel: bad loop(%p) or bad channel(%p)", loop, channel);
        return -1;
    }

    loop_run_inloop(loop, do_loop_update_channel, channel);

    return 0;
}
Exemple #6
0
void tcp_connection_attach(tcp_connection_t *connection, loop_t *loop)
{
    if (NULL == connection || NULL == loop)
    {
        log_error("tcp_connection_attach: bad connection(%p) or bad loop(%p)", connection, loop);
        return;
    }

    log_debug("tcp_connection_attach: fd(%d)", connection->fd);

    connection->loop = loop;
    loop_run_inloop(loop, do_connection_attach, connection);

    return;
}
Exemple #7
0
int tcp_server_start(tcp_server_t *server)
{
    if (NULL == server)
    {
        log_error("tcp_server_start: bad server");
        return -1;
    }

    if (server->is_started)
    {
        return 0;
    }

    server->is_started = 1;
    loop_run_inloop(server->loop, do_tcp_server_start, server);

    return 0;
}
Exemple #8
0
udp_peer_t* udp_peer_new(loop_t *loop, const char *ip, unsigned short port, on_message_f messagecb, on_writable_f writecb, void *userdata)
{
    SOCKET fd;
    udp_peer_t* peer;

    if (NULL == loop || NULL == ip || 0 == port || NULL == messagecb)
    {
        log_error("udp_peer_new: bad loop(%p) or bad ip(%p) or bad port(%p) or bad messagecb(%p)", loop, ip, port, messagecb);
        return NULL;
    }

    fd = create_udp_socket(port, ip);
    if (INVALID_SOCKET == fd)
    {
        log_error("udp_peer_new: create_udp_socket() failed, local addr: %s:%u, errno: %d", ip, port, WSAGetLastError());
        return NULL;
    }

    peer = (udp_peer_t*)malloc(sizeof(udp_peer_t));
    memset(peer, 0, sizeof(*peer));

    peer->ref_count = 1;
    peer->loop = loop;
    strncpy(peer->ip, ip, 16);
    peer->port = port;
    peer->messagecb = messagecb;
    peer->message_userdata = userdata;
    peer->writecb = writecb;
    peer->write_userdata = userdata;

    peer->fd = fd;    
    peer->channel = channel_new(fd, peer->loop, udp_peer_onevent, peer);
    
    loop_run_inloop(peer->loop, init_udp_peer_event, peer);

    return peer;
}
Exemple #9
0
on_writable_f udp_peer_onwrite(udp_peer_t* peer, on_writable_f writecb, void *userdata)
{
    on_writable_f old_writecb;
    struct udp_peer_notify *notify;

    if (NULL == peer)
    {
        log_error("udp_peer_onwrite: bad peer");
        return NULL;
    }

    old_writecb = peer->writecb;

    notify = (struct udp_peer_notify *)malloc(sizeof(*notify));    
    memset(notify, 0, sizeof(*notify));

    (void)atomic_inc(&peer->ref_count);
    notify->peer = peer;
    notify->writecb = writecb;
    notify->write_userdata = userdata;
    loop_run_inloop(peer->loop, do_udp_peer_onwrite, notify);

    return old_writecb;
}