|
Simple coroutine library integrated with IO event loop (libevent) / objects in plain C Snapshot
|
listener for tcp connections, a usermode thread is created for each new connection. More...
Classes | |
| struct | tagTCPACCEPTOR |
Typedefs | |
| typedef int(* | EVTHREAD_FACTORY )(int fd, EVTHREAD_PROC *proc, void **ctx, void *factory_ctx) |
| typedef struct tagTCPACCEPTOR | EVTCPACCEPTOR |
Functions | |
| EVTCPACCEPTOR * | EVTCPACCEPTOR_init_ex (EVLOOP *loop, SOCKADDR *addr, int listener_backlog, EVTHREAD_FACTORY factory, int read_buffer_size, int write_buffer_size, void *ctx) |
| EVTCPACCEPTOR * | EVTCPACCEPTOR_init (EVLOOP *loop, int listener_fd, EVTHREAD_FACTORY factory, int read_buffer_size, int write_buffer_size, void *ctx) |
| void | EVTCPACCEPTOR_close (EVTCPACCEPTOR *) |
listener for tcp connections, a usermode thread is created for each new connection.
| typedef struct tagTCPACCEPTOR EVTCPACCEPTOR |
| typedef int(* EVTHREAD_FACTORY)(int fd, EVTHREAD_PROC *proc, void **ctx, void *factory_ctx) |
Definition at line 233 of file evthread.h.
| void EVTCPACCEPTOR_close | ( | EVTCPACCEPTOR * | ) |
Definition at line 659 of file evthread.c.
{
event_del(&acceptor->read_event);
if (acceptor->fd != -1) {
close(acceptor->fd);
}
free(acceptor);
}
| EVTCPACCEPTOR* EVTCPACCEPTOR_init | ( | EVLOOP * | loop, |
| int | listener_fd, | ||
| EVTHREAD_FACTORY | factory, | ||
| int | read_buffer_size, | ||
| int | write_buffer_size, | ||
| void * | ctx | ||
| ) |
Definition at line 630 of file evthread.c.
{
EVTCPACCEPTOR *acceptor;
acceptor = (EVTCPACCEPTOR *) malloc( sizeof( EVTCPACCEPTOR ) );
if (!acceptor) {
return 0;
}
if (fd_set_blocking( fd, 0 )) {
free(acceptor);
return 0;
}
acceptor->loop = loop;
acceptor->factory = factory;
acceptor->fd = fd;
acceptor->ctx = ctx;
acceptor->read_buffer_size = read_buffer_size;
acceptor->send_buffer_size = send_buffer_size;
event_set( &acceptor->read_event, fd, EV_READ | EV_PERSIST, socket_listener_cb, (void *) acceptor );
event_base_set( loop->ev_base, &acceptor->read_event );
event_add( &acceptor->read_event, 0 );
return acceptor;
}
| EVTCPACCEPTOR* EVTCPACCEPTOR_init_ex | ( | EVLOOP * | loop, |
| SOCKADDR * | addr, | ||
| int | listener_backlog, | ||
| EVTHREAD_FACTORY | factory, | ||
| int | read_buffer_size, | ||
| int | write_buffer_size, | ||
| void * | ctx | ||
| ) |
Definition at line 615 of file evthread.c.
{
int listener_fd;
listener_fd = fd_make_tcp_listener( addr, listener_backlog );
if (listener_fd == -1) {
MLOG_ERROR( "Can't listen on address %s. error errno %d", SOCKADDR_to_string( addr ), errno );
return 0;
}
return EVTCPACCEPTOR_init( loop, listener_fd, factory, read_buffer_size, send_buffer_size, ctx );
}
1.7.4