netio.h File Reference
`#include <signal.h>`
`#include "config.h"`
`#include "status.h"`

Go to the source code of this file.

## Data Structures

struct | netio_handler_list_struct
struct | netio_handler_struct
struct | netio_struct

## Macros

#define | PF_INET AF_INET
#define | PF_INET6 AF_INET6

## Typedefs

typedef enum netio_events_enum | netio_events_type
typedef struct netio_struct | netio_type
typedef struct netio_handler_struct | netio_handler_type
typedef struct netio_handler_list_struct | netio_handler_list_type
typedef void(* | netio_event_handler_type) (netio_type *netio, netio_handler_type *handler, netio_events_type event_types)

## Enumerations

enum | netio_events_enum { NETIO_EVENT_NONE = 0 , NETIO_EVENT_READ = 1 , NETIO_EVENT_WRITE = 2 , NETIO_EVENT_EXCEPT = 4 , NETIO_EVENT_TIMEOUT = 8 }

## Functions

netio_type * | netio_create (void)
void | netio_add_handler (netio_type *netio, netio_handler_type *handler)
void | netio_remove_handler (netio_type *netio, netio_handler_type *handler)
const struct timespec * | netio_current_time (netio_type *netio)
int | netio_dispatch (netio_type *netio, const struct timespec *timeout, const sigset_t *sigmask)
void | netio_cleanup (netio_type *netio)
void | netio_cleanup_shallow (netio_type *netio)
void | timespec_add (struct timespec *left, const struct timespec *right)

## Macro Definition Documentation

## PF_INET

#define PF_INET AF_INET

Network I/O Support.

Definition at line 58 of file netio.h.

## PF_INET6

#define PF_INET6 AF_INET6

Definition at line 61 of file netio.h.

## Typedef Documentation

## netio_event_handler_type

typedef void(* netio_event_handler_type) (netio_type *netio, netio_handler_type *handler, netio_events_type event_types)

Network I/O event handler function.

Definition at line 86 of file netio.h.

## netio_events_type

typedef enum netio_events_enum netio_events_type

Definition at line 76 of file netio.h.

## netio_handler_list_type

typedef struct netio_handler_list_struct netio_handler_list_type

Definition at line 80 of file netio.h.

## netio_handler_type

typedef struct netio_handler_struct netio_handler_type

Definition at line 79 of file netio.h.

## netio_type

typedef struct netio_struct netio_type

Definition at line 78 of file netio.h.

## Enumeration Type Documentation

## netio_events_enum

enum netio_events_enum

Enumerator
NETIO_EVENT_NONE |
NETIO_EVENT_READ |
NETIO_EVENT_WRITE |
NETIO_EVENT_EXCEPT |
NETIO_EVENT_TIMEOUT |

Definition at line 69 of file netio.h.

## Function Documentation

## netio_add_handler()

void netio_add_handler | ( | netio_type * | netio,
|  | netio_handler_type * | handler )

extern

Definition at line 53 of file netio.c.

References netio_handler_list_struct::handler, netio_struct::handlers, and netio_handler_list_struct::next.

Referenced by dnshandler_start(), sock_handle_tcp_accept(), and xfrhandler_start().

## netio_cleanup()

void netio_cleanup | ( | netio_type * | netio | ) |

extern

Clean up netio instance

Parameters

  [in] | netio | netio instance

Clean up netio instance

Definition at line 336 of file netio.c.

References netio_handler_struct::free_handler, netio_handler_list_struct::handler, netio_struct::handlers, netio_handler_list_struct::next, and netio_handler_struct::user_data.

Referenced by dnshandler_cleanup().

## netio_cleanup_shallow()

void netio_cleanup_shallow | ( | netio_type * | netio | ) |

extern

Clean up netio instance

Definition at line 355 of file netio.c.

References netio_struct::handlers.

Referenced by xfrhandler_cleanup().

## netio_create()

netio_type * netio_create | ( | void |  | ) |

extern

Definition at line 39 of file netio.c.

References netio_struct::dispatch_next, and netio_struct::handlers.

Referenced by dnshandler_create(), and xfrhandler_create().

## netio_current_time()

const struct timespec * netio_current_time | ( | netio_type * | netio | ) |

extern

Definition at line 163 of file netio.c.

References netio_struct::cached_current_time, and netio_struct::have_current_time.

Referenced by netio_dispatch(), sock_handle_tcp_accept(), sock_handle_tcp_read(), and sock_handle_tcp_write().

## netio_dispatch()

int netio_dispatch | ( | netio_type * | netio,
|  | const struct timespec * | timeout,
|  | const sigset_t * | sigmask )

extern

Definition at line 187 of file netio.c.

References netio_struct::dispatch_next, netio_handler_struct::event_handler, netio_handler_struct::event_types, netio_handler_struct::fd, netio_handler_list_struct::handler, netio_struct::handlers, netio_struct::have_current_time, netio_current_time(), NETIO_EVENT_EXCEPT, NETIO_EVENT_NONE, NETIO_EVENT_READ, NETIO_EVENT_TIMEOUT, NETIO_EVENT_WRITE, netio_handler_list_struct::next, pselect(), and netio_handler_struct::timeout.

Referenced by dnshandler_start(), and xfrhandler_start().

## netio_remove_handler()

void netio_remove_handler | ( | netio_type * | netio,
|  | netio_handler_type * | handler )

extern

Definition at line 72 of file netio.c.

References netio_struct::dispatch_next, netio_struct::handlers, and netio_handler_list_struct::next.

Referenced by engine_update_zones().

## timespec_add()

void timespec_add | ( | struct timespec * | left,
|  | const struct timespec * | right )

extern

Add timespecs.

Parameters

  [in] | left | left
  [in] | right | right

Add timespecs.

Definition at line 131 of file netio.c.

References NANOSECONDS_PER_SECOND.

Referenced by sock_handle_tcp_accept(), sock_handle_tcp_read(), and sock_handle_tcp_write().