| 
    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