… | |
… | |
25 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
26 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
26 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
27 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 | */ |
28 | */ |
29 | |
29 | |
30 | #ifndef EV_H |
30 | #ifndef EV_H__ |
31 | #define EV_H |
31 | #define EV_H__ |
32 | |
32 | |
33 | #ifdef __cplusplus |
33 | #ifdef __cplusplus |
34 | extern "C" { |
34 | extern "C" { |
35 | #endif |
35 | #endif |
36 | |
36 | |
… | |
… | |
85 | #endif |
85 | #endif |
86 | |
86 | |
87 | #define EV_VERSION_MAJOR 1 |
87 | #define EV_VERSION_MAJOR 1 |
88 | #define EV_VERSION_MINOR 1 |
88 | #define EV_VERSION_MINOR 1 |
89 | |
89 | |
|
|
90 | #ifndef EV_CB_DECLARE |
|
|
91 | # define EV_CB_DECLARE(type) void (*cb)(EV_P_ struct type *w, int revents) |
|
|
92 | #endif |
|
|
93 | #ifndef EV_CB_INVOKE |
|
|
94 | # define EV_CB_INVOKE(watcher,revents) (watcher)->cb (EV_A_ (watcher), (revents)) |
|
|
95 | #endif |
|
|
96 | |
90 | /* |
97 | /* |
91 | * struct member types: |
98 | * struct member types: |
92 | * private: you can look at them, but not change them, and they might not mean anything to you. |
99 | * private: you can look at them, but not change them, and they might not mean anything to you. |
93 | * ro: can be read anytime, but only changed when the watcher isn't active |
100 | * ro: can be read anytime, but only changed when the watcher isn't active |
94 | * rw: can be read and modified anytime, even when the watcher is active |
101 | * rw: can be read and modified anytime, even when the watcher is active |
… | |
… | |
98 | #define EV_WATCHER(type) \ |
105 | #define EV_WATCHER(type) \ |
99 | int active; /* private */ \ |
106 | int active; /* private */ \ |
100 | int pending; /* private */ \ |
107 | int pending; /* private */ \ |
101 | int priority; /* private */ \ |
108 | int priority; /* private */ \ |
102 | EV_COMMON; /* rw */ \ |
109 | EV_COMMON; /* rw */ \ |
103 | void (*cb)(EV_P_ struct type *, int revents) /* private */ /* gets invoked with an eventmask */ |
110 | EV_CB_DECLARE (type) /* private */ |
104 | |
111 | |
105 | #define EV_WATCHER_LIST(type) \ |
112 | #define EV_WATCHER_LIST(type) \ |
106 | EV_WATCHER (type); \ |
113 | EV_WATCHER (type); \ |
107 | struct ev_watcher_list *next /* private */ |
114 | struct ev_watcher_list *next /* private */ |
108 | |
115 | |
109 | #define EV_WATCHER_TIME(type) \ |
116 | #define EV_WATCHER_TIME(type) \ |
110 | EV_WATCHER (type); \ |
117 | EV_WATCHER (type); \ |
111 | ev_tstamp at /* private */ |
118 | ev_tstamp at /* private */ |
112 | |
119 | |
113 | /* base class, nothing to see here unless you subclass */ |
120 | /* base class, nothing to see here unless you subclass */ |
114 | struct ev_watcher { |
121 | struct ev_watcher |
|
|
122 | { |
115 | EV_WATCHER (ev_watcher); |
123 | EV_WATCHER (ev_watcher); |
116 | }; |
124 | }; |
117 | |
125 | |
118 | /* base class, nothing to see here unless you subclass */ |
126 | /* base class, nothing to see here unless you subclass */ |
119 | struct ev_watcher_list { |
127 | struct ev_watcher_list |
|
|
128 | { |
120 | EV_WATCHER_LIST (ev_watcher_list); |
129 | EV_WATCHER_LIST (ev_watcher_list); |
121 | }; |
130 | }; |
122 | |
131 | |
123 | /* base class, nothing to see here unless you subclass */ |
132 | /* base class, nothing to see here unless you subclass */ |
124 | struct ev_watcher_time { |
133 | struct ev_watcher_time |
|
|
134 | { |
125 | EV_WATCHER_TIME (ev_watcher_time); |
135 | EV_WATCHER_TIME (ev_watcher_time); |
126 | }; |
136 | }; |
127 | |
137 | |
128 | /* invoked after a specific time, repeatable (based on monotonic clock) */ |
138 | /* invoked after a specific time, repeatable (based on monotonic clock) */ |
129 | /* revent EV_TIMEOUT */ |
139 | /* revent EV_TIMEOUT */ |
… | |
… | |
329 | #if EV_PROTOTYPES |
339 | #if EV_PROTOTYPES |
330 | |
340 | |
331 | /* feeds an event into a watcher as if the event actually occured */ |
341 | /* feeds an event into a watcher as if the event actually occured */ |
332 | /* accepts any ev_watcher type */ |
342 | /* accepts any ev_watcher type */ |
333 | void ev_feed_event (EV_P_ void *w, int revents); |
343 | void ev_feed_event (EV_P_ void *w, int revents); |
|
|
344 | void ev_feed_fd_event (EV_P_ int fd, int revents); |
|
|
345 | void ev_feed_signal_event (EV_P_ int signum); |
334 | |
346 | |
335 | void ev_io_start (EV_P_ struct ev_io *w); |
347 | void ev_io_start (EV_P_ struct ev_io *w); |
336 | void ev_io_stop (EV_P_ struct ev_io *w); |
348 | void ev_io_stop (EV_P_ struct ev_io *w); |
337 | |
349 | |
338 | void ev_timer_start (EV_P_ struct ev_timer *w); |
350 | void ev_timer_start (EV_P_ struct ev_timer *w); |