libonion
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Typedefs | Functions
poller_libevent.c File Reference
#include <event2/event.h>
#include <event2/thread.h>
#include <stdlib.h>
#include <semaphore.h>
#include "poller.h"
#include "log.h"
#include "low.h"

Data Structures

struct  onion_poller_t
 Manages the polling on a set of file descriptors. More...
struct  onion_poller_slot_t
 Data about a poller element: timeout, function to call shutdown function.

Typedefs

typedef struct onion_poller_slot_t onion_poller_slot

Functions

onion_poller_slotonion_poller_slot_new (int fd, int(*f)(void *), void *data)
 Create a new slot for the poller.
void onion_poller_slot_free (onion_poller_slot *el)
 Cleans a poller slot. Do not call if already on the poller (onion_poller_add). Use onion_poller_remove instead.
void onion_poller_slot_set_shutdown (onion_poller_slot *el, void(*shutdown)(void *), void *data)
 Sets the shutdown function for this poller slot.
void onion_poller_slot_set_timeout (onion_poller_slot *el, int timeout_ms)
 Sets the timeout for this slot. Current implementation takes ms, but then it rounds to seconds.
void onion_poller_slot_set_type (onion_poller_slot *el, int type)
 Sets the polling type: read/write/other. O_POLL_READ | O_POLL_WRITE | O_POLL_OTHER.
onion_polleronion_poller_new (int aprox_n)
 Create a new poller.
void onion_poller_free (onion_poller *p)
 Frees the poller. It first stops it.
int onion_poller_add (onion_poller *poller, onion_poller_slot *el)
 Adds a slot to the poller.
int onion_poller_remove (onion_poller *poller, int fd)
 Removes a fd from the poller.
onion_poller_slotonion_poller_get (onion_poller *poller, int fd)
 Gets the poller to do some modifications as change shutdown.
void onion_poller_poll (onion_poller *poller)
 Do the polling. If on several threads, this is done in every thread.
void onion_poller_stop (onion_poller *poller)
 Stops the polling. This only marks the flag, and should be cancelled with pthread_cancel.
void onion_poller_set_queue_size_per_thread (onion_poller *poller, size_t count)
 Sets the max events per thread queue size.

Typedef Documentation

typedef struct onion_poller_slot_t onion_poller_slot

Function Documentation

int onion_poller_add ( onion_poller poller,
onion_poller_slot el 
)

Adds a slot to the poller.

References onion_poller_t::base.

void onion_poller_free ( onion_poller p)

Frees the poller. It first stops it.

References onion_poller_t::base, and onion_low_free().

onion_poller* onion_poller_new ( int  aprox_n)

Create a new poller.

References onion_poller_t::base, onion_low_calloc(), and onion_poller_t::sem.

void onion_poller_poll ( onion_poller poller)

Do the polling. If on several threads, this is done in every thread.

References onion_poller_t::base, onion_poller_t::sem, and onion_poller_t::stop.

int onion_poller_remove ( onion_poller poller,
int  fd 
)

Removes a fd from the poller.

References ONION_ERROR.

void onion_poller_slot_free ( onion_poller_slot el)

Cleans a poller slot. Do not call if already on the poller (onion_poller_add). Use onion_poller_remove instead.

onion_poller_slot* onion_poller_slot_new ( int  fd,
int(*)(void *)  f,
void *  data 
)

Create a new slot for the poller.

References onion_low_calloc().

void onion_poller_slot_set_shutdown ( onion_poller_slot el,
void(*)(void *)  shutdown,
void *  data 
)

Sets the shutdown function for this poller slot.

void onion_poller_slot_set_timeout ( onion_poller_slot el,
int  timeout_ms 
)

Sets the timeout for this slot. Current implementation takes ms, but then it rounds to seconds.

void onion_poller_slot_set_type ( onion_poller_slot el,
int  type 
)

Sets the polling type: read/write/other. O_POLL_READ | O_POLL_WRITE | O_POLL_OTHER.

References O_POLL_READ, and O_POLL_WRITE.

void onion_poller_stop ( onion_poller poller)

Stops the polling. This only marks the flag, and should be cancelled with pthread_cancel.

References onion_poller_t::base, and onion_poller_t::stop.