ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.h
(Generate patch)

Comparing libev/ev.h (file contents):
Revision 1.40 by root, Thu Nov 8 00:44:17 2007 UTC vs.
Revision 1.44 by root, Fri Nov 9 20:55:09 2007 UTC

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
34extern "C" { 34extern "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 */
114struct ev_watcher { 121struct 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 */
119struct ev_watcher_list { 127struct 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 */
124struct ev_watcher_time { 133struct 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 */
195 int pid; /* ro */ 205 int pid; /* ro */
196 int rpid; /* rw, holds the received pid */ 206 int rpid; /* rw, holds the received pid */
197 int rstatus; /* rw, holds the exit status, use the macros from sys/wait.h */ 207 int rstatus; /* rw, holds the exit status, use the macros from sys/wait.h */
198}; 208};
199 209
210/* the presence of this union forces similar struct layout */
200union ev_any_watcher 211union ev_any_watcher
201{ 212{
202 struct ev_watcher w; 213 struct ev_watcher w;
203 struct ev_watcher_list wl; 214 struct ev_watcher_list wl;
204 struct ev_io io; 215 struct ev_io io;
324#define ev_set_cb(ev,cb_) ev_cb (ev) = (cb_) 335#define ev_set_cb(ev,cb_) ev_cb (ev) = (cb_)
325 336
326/* stopping (enabling, adding) a watcher does nothing if it is already running */ 337/* stopping (enabling, adding) a watcher does nothing if it is already running */
327/* stopping (disabling, deleting) a watcher does nothing unless its already running */ 338/* stopping (disabling, deleting) a watcher does nothing unless its already running */
328#if EV_PROTOTYPES 339#if EV_PROTOTYPES
340
341/* feeds an event into a watcher as if the event actually occured */
342/* accepts any ev_watcher type */
343void ev_feed_event (EV_P_ void *w, int revents);
344void ev_feed_fd_event (EV_P_ int fd, int revents);
345void ev_feed_signal_event (EV_P_ int signum);
346
329void ev_io_start (EV_P_ struct ev_io *w); 347void ev_io_start (EV_P_ struct ev_io *w);
330void ev_io_stop (EV_P_ struct ev_io *w); 348void ev_io_stop (EV_P_ struct ev_io *w);
331 349
332void ev_timer_start (EV_P_ struct ev_timer *w); 350void ev_timer_start (EV_P_ struct ev_timer *w);
333void ev_timer_stop (EV_P_ struct ev_timer *w); 351void ev_timer_stop (EV_P_ struct ev_timer *w);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines