Librasta & Libsci
A C implementation of the RaSTA protocol stack
events.h
Go to the documentation of this file.
1 #pragma once
2 
3 #ifdef __cplusplus
4 extern "C" { // only need to export C interface if
5  // used by C++ source code
6 #endif
7 
8 #include <stdint.h>
9 
10 typedef struct event_system event_system;
11 typedef struct rasta rasta;
12 
13 // event callback pointer, return 0 to keep the loop running, everything else stops the loop
14 typedef int (*event_ptr)(void *h, int fd);
15 
16 #define EV_READABLE (1 << 0)
17 #define EV_WRITABLE (1 << 1)
18 #define EV_EXCEPTIONAL (1 << 2)
19 
23 typedef struct timed_event {
25  void *carry_data;
26  struct timed_event *prev;
27  struct timed_event *next;
28  uint64_t interval;
29  uint64_t last_call;
30  char enabled;
32 
36 typedef struct fd_event {
38  void *carry_data;
39  struct fd_event *prev;
40  struct fd_event *next;
41  int fd;
42  int options;
43  char enabled;
45 
51 
57 
63 
69 
78 
86 
95 void add_fd_event(event_system *ev_sys, fd_event *event, int options);
96 
97 void rasta_add_fd_event(rasta *h, fd_event *event, int options);
98 
105 void remove_fd_event(event_system *ev_sys, fd_event *event);
106 
108 
109 #ifdef __cplusplus
110 }
111 #endif
void disable_fd_event(fd_event *event)
void enable_timed_event(timed_event *event)
struct fd_event fd_event
void remove_timed_event(event_system *ev_sys, timed_event *event)
void add_fd_event(event_system *ev_sys, fd_event *event, int options)
void add_timed_event(event_system *ev_sys, timed_event *event)
void enable_fd_event(fd_event *event)
void rasta_remove_fd_event(rasta *h, fd_event *event)
int(* event_ptr)(void *h, int fd)
Definition: events.h:14
struct event_system event_system
Definition: events.h:10
struct rasta rasta
Definition: events.h:11
void remove_fd_event(event_system *ev_sys, fd_event *event)
void disable_timed_event(timed_event *event)
struct timed_event timed_event
void rasta_add_fd_event(rasta *h, fd_event *event, int options)
Definition: events.h:36
void * carry_data
Definition: events.h:38
struct fd_event * next
Definition: events.h:40
event_ptr callback
Definition: events.h:37
int fd
Definition: events.h:41
int options
Definition: events.h:42
struct fd_event * prev
Definition: events.h:39
char enabled
Definition: events.h:43
Definition: events.h:23
struct timed_event * prev
Definition: events.h:26
struct timed_event * next
Definition: events.h:27
uint64_t last_call
Definition: events.h:29
event_ptr callback
Definition: events.h:24
void * carry_data
Definition: events.h:25
char enabled
Definition: events.h:30
uint64_t interval
Definition: events.h:28