xref: /minix3/external/bsd/libevent/dist/include/event2/event_compat.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc /*	$NetBSD: event_compat.h,v 1.1.1.2 2015/01/29 06:38:27 spz Exp $	*/
2*0a6a1f1dSLionel Sambuc /*	$NetBSD: event_compat.h,v 1.1.1.2 2015/01/29 06:38:27 spz Exp $	*/
3e985b929SDavid van Moolenbroek /*
4e985b929SDavid van Moolenbroek  * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
5e985b929SDavid van Moolenbroek  * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
6e985b929SDavid van Moolenbroek  *
7e985b929SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without
8e985b929SDavid van Moolenbroek  * modification, are permitted provided that the following conditions
9e985b929SDavid van Moolenbroek  * are met:
10e985b929SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright
11e985b929SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer.
12e985b929SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce the above copyright
13e985b929SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer in the
14e985b929SDavid van Moolenbroek  *    documentation and/or other materials provided with the distribution.
15e985b929SDavid van Moolenbroek  * 3. The name of the author may not be used to endorse or promote products
16e985b929SDavid van Moolenbroek  *    derived from this software without specific prior written permission.
17e985b929SDavid van Moolenbroek  *
18e985b929SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19e985b929SDavid van Moolenbroek  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20e985b929SDavid van Moolenbroek  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21e985b929SDavid van Moolenbroek  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22e985b929SDavid van Moolenbroek  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23e985b929SDavid van Moolenbroek  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24e985b929SDavid van Moolenbroek  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25e985b929SDavid van Moolenbroek  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26e985b929SDavid van Moolenbroek  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27e985b929SDavid van Moolenbroek  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28e985b929SDavid van Moolenbroek  */
29e985b929SDavid van Moolenbroek #ifndef _EVENT2_EVENT_COMPAT_H_
30e985b929SDavid van Moolenbroek #define _EVENT2_EVENT_COMPAT_H_
31e985b929SDavid van Moolenbroek 
32e985b929SDavid van Moolenbroek /** @file event2/event_compat.h
33e985b929SDavid van Moolenbroek 
34e985b929SDavid van Moolenbroek   Potentially non-threadsafe versions of the functions in event.h: provided
35e985b929SDavid van Moolenbroek   only for backwards compatibility.
36e985b929SDavid van Moolenbroek 
37e985b929SDavid van Moolenbroek   In the oldest versions of Libevent, event_base was not a first-class
38e985b929SDavid van Moolenbroek   structure.  Instead, there was a single event base that every function
39e985b929SDavid van Moolenbroek   manipulated.  Later, when separate event bases were added, the old functions
40e985b929SDavid van Moolenbroek   that didn't take an event_base argument needed to work by manipulating the
41e985b929SDavid van Moolenbroek   "current" event base.  This could lead to thread-safety issues, and obscure,
42e985b929SDavid van Moolenbroek   hard-to-diagnose bugs.
43e985b929SDavid van Moolenbroek 
44e985b929SDavid van Moolenbroek   @deprecated All functions in this file are by definition deprecated.
45e985b929SDavid van Moolenbroek  */
46e985b929SDavid van Moolenbroek 
47e985b929SDavid van Moolenbroek #ifdef __cplusplus
48e985b929SDavid van Moolenbroek extern "C" {
49e985b929SDavid van Moolenbroek #endif
50e985b929SDavid van Moolenbroek 
51e985b929SDavid van Moolenbroek #include <event2/event-config.h>
52e985b929SDavid van Moolenbroek #ifdef _EVENT_HAVE_SYS_TYPES_H
53e985b929SDavid van Moolenbroek #include <sys/types.h>
54e985b929SDavid van Moolenbroek #endif
55e985b929SDavid van Moolenbroek #ifdef _EVENT_HAVE_SYS_TIME_H
56e985b929SDavid van Moolenbroek #include <sys/time.h>
57e985b929SDavid van Moolenbroek #endif
58e985b929SDavid van Moolenbroek 
59e985b929SDavid van Moolenbroek /* For int types. */
60e985b929SDavid van Moolenbroek #include <event2/util.h>
61e985b929SDavid van Moolenbroek 
62e985b929SDavid van Moolenbroek /**
63e985b929SDavid van Moolenbroek   Initialize the event API.
64e985b929SDavid van Moolenbroek 
65e985b929SDavid van Moolenbroek   The event API needs to be initialized with event_init() before it can be
66e985b929SDavid van Moolenbroek   used.  Sets the global current base that gets used for events that have no
67e985b929SDavid van Moolenbroek   base associated with them.
68e985b929SDavid van Moolenbroek 
69e985b929SDavid van Moolenbroek   @deprecated This function is deprecated because it replaces the "current"
70e985b929SDavid van Moolenbroek     event_base, and is totally unsafe for multithreaded use.  The replacement
71e985b929SDavid van Moolenbroek     is event_base_new().
72e985b929SDavid van Moolenbroek 
73e985b929SDavid van Moolenbroek   @see event_base_set(), event_base_new()
74e985b929SDavid van Moolenbroek  */
75e985b929SDavid van Moolenbroek struct event_base *event_init(void);
76e985b929SDavid van Moolenbroek 
77e985b929SDavid van Moolenbroek /**
78e985b929SDavid van Moolenbroek   Loop to process events.
79e985b929SDavid van Moolenbroek 
80e985b929SDavid van Moolenbroek   Like event_base_dispatch(), but uses the "current" base.
81e985b929SDavid van Moolenbroek 
82e985b929SDavid van Moolenbroek   @deprecated This function is deprecated because it is easily confused by
83e985b929SDavid van Moolenbroek     multiple calls to event_init(), and because it is not safe for
84e985b929SDavid van Moolenbroek     multithreaded use.  The replacement is event_base_dispatch().
85e985b929SDavid van Moolenbroek 
86e985b929SDavid van Moolenbroek   @see event_base_dispatch(), event_init()
87e985b929SDavid van Moolenbroek  */
88e985b929SDavid van Moolenbroek int event_dispatch(void);
89e985b929SDavid van Moolenbroek 
90e985b929SDavid van Moolenbroek /**
91e985b929SDavid van Moolenbroek   Handle events.
92e985b929SDavid van Moolenbroek 
93e985b929SDavid van Moolenbroek   This function behaves like event_base_loop(), but uses the "current" base
94e985b929SDavid van Moolenbroek 
95e985b929SDavid van Moolenbroek   @deprecated This function is deprecated because it uses the event base from
96e985b929SDavid van Moolenbroek     the last call to event_init, and is therefore not safe for multithreaded
97e985b929SDavid van Moolenbroek     use.  The replacement is event_base_loop().
98e985b929SDavid van Moolenbroek 
99e985b929SDavid van Moolenbroek   @see event_base_loop(), event_init()
100e985b929SDavid van Moolenbroek */
101e985b929SDavid van Moolenbroek int event_loop(int);
102e985b929SDavid van Moolenbroek 
103e985b929SDavid van Moolenbroek 
104e985b929SDavid van Moolenbroek /**
105e985b929SDavid van Moolenbroek   Exit the event loop after the specified time.
106e985b929SDavid van Moolenbroek 
107e985b929SDavid van Moolenbroek   This function behaves like event_base_loopexit(), except that it uses the
108e985b929SDavid van Moolenbroek   "current" base.
109e985b929SDavid van Moolenbroek 
110e985b929SDavid van Moolenbroek   @deprecated This function is deprecated because it uses the event base from
111e985b929SDavid van Moolenbroek     the last call to event_init, and is therefore not safe for multithreaded
112e985b929SDavid van Moolenbroek     use.  The replacement is event_base_loopexit().
113e985b929SDavid van Moolenbroek 
114e985b929SDavid van Moolenbroek   @see event_init, event_base_loopexit()
115e985b929SDavid van Moolenbroek   */
116e985b929SDavid van Moolenbroek int event_loopexit(const struct timeval *);
117e985b929SDavid van Moolenbroek 
118e985b929SDavid van Moolenbroek 
119e985b929SDavid van Moolenbroek /**
120e985b929SDavid van Moolenbroek   Abort the active event_loop() immediately.
121e985b929SDavid van Moolenbroek 
122e985b929SDavid van Moolenbroek   This function behaves like event_base_loopbreakt(), except that it uses the
123e985b929SDavid van Moolenbroek   "current" base.
124e985b929SDavid van Moolenbroek 
125e985b929SDavid van Moolenbroek   @deprecated This function is deprecated because it uses the event base from
126e985b929SDavid van Moolenbroek     the last call to event_init, and is therefore not safe for multithreaded
127e985b929SDavid van Moolenbroek     use.  The replacement is event_base_loopbreak().
128e985b929SDavid van Moolenbroek 
129e985b929SDavid van Moolenbroek   @see event_base_loopbreak(), event_init()
130e985b929SDavid van Moolenbroek  */
131e985b929SDavid van Moolenbroek int event_loopbreak(void);
132e985b929SDavid van Moolenbroek 
133e985b929SDavid van Moolenbroek /**
134e985b929SDavid van Moolenbroek   Schedule a one-time event to occur.
135e985b929SDavid van Moolenbroek 
136e985b929SDavid van Moolenbroek   @deprecated This function is obsolete, and has been replaced by
137e985b929SDavid van Moolenbroek     event_base_once(). Its use is deprecated because it relies on the
138e985b929SDavid van Moolenbroek     "current" base configured by event_init().
139e985b929SDavid van Moolenbroek 
140e985b929SDavid van Moolenbroek   @see event_base_once()
141e985b929SDavid van Moolenbroek  */
142e985b929SDavid van Moolenbroek int event_once(evutil_socket_t , short,
143e985b929SDavid van Moolenbroek     void (*)(evutil_socket_t, short, void *), void *, const struct timeval *);
144e985b929SDavid van Moolenbroek 
145e985b929SDavid van Moolenbroek 
146e985b929SDavid van Moolenbroek /**
147e985b929SDavid van Moolenbroek   Get the kernel event notification mechanism used by Libevent.
148e985b929SDavid van Moolenbroek 
149e985b929SDavid van Moolenbroek   @deprecated This function is obsolete, and has been replaced by
150e985b929SDavid van Moolenbroek     event_base_get_method(). Its use is deprecated because it relies on the
151e985b929SDavid van Moolenbroek     "current" base configured by event_init().
152e985b929SDavid van Moolenbroek 
153e985b929SDavid van Moolenbroek   @see event_base_get_method()
154e985b929SDavid van Moolenbroek  */
155e985b929SDavid van Moolenbroek const char *event_get_method(void);
156e985b929SDavid van Moolenbroek 
157e985b929SDavid van Moolenbroek 
158e985b929SDavid van Moolenbroek /**
159e985b929SDavid van Moolenbroek   Set the number of different event priorities.
160e985b929SDavid van Moolenbroek 
161e985b929SDavid van Moolenbroek   @deprecated This function is deprecated because it is easily confused by
162e985b929SDavid van Moolenbroek     multiple calls to event_init(), and because it is not safe for
163e985b929SDavid van Moolenbroek     multithreaded use.  The replacement is event_base_priority_init().
164e985b929SDavid van Moolenbroek 
165e985b929SDavid van Moolenbroek   @see event_base_priority_init()
166e985b929SDavid van Moolenbroek  */
167e985b929SDavid van Moolenbroek int	event_priority_init(int);
168e985b929SDavid van Moolenbroek 
169e985b929SDavid van Moolenbroek /**
170e985b929SDavid van Moolenbroek   Prepare an event structure to be added.
171e985b929SDavid van Moolenbroek 
172e985b929SDavid van Moolenbroek   @deprecated event_set() is not recommended for new code, because it requires
173e985b929SDavid van Moolenbroek      a subsequent call to event_base_set() to be safe under most circumstances.
174e985b929SDavid van Moolenbroek      Use event_assign() or event_new() instead.
175e985b929SDavid van Moolenbroek  */
176e985b929SDavid van Moolenbroek void event_set(struct event *, evutil_socket_t, short, void (*)(evutil_socket_t, short, void *), void *);
177e985b929SDavid van Moolenbroek 
178e985b929SDavid van Moolenbroek #define evtimer_set(ev, cb, arg)	event_set((ev), -1, 0, (cb), (arg))
179e985b929SDavid van Moolenbroek #define evsignal_set(ev, x, cb, arg)	\
180e985b929SDavid van Moolenbroek 	event_set((ev), (x), EV_SIGNAL|EV_PERSIST, (cb), (arg))
181e985b929SDavid van Moolenbroek 
182e985b929SDavid van Moolenbroek 
183e985b929SDavid van Moolenbroek /**
184e985b929SDavid van Moolenbroek    @name timeout_* macros
185e985b929SDavid van Moolenbroek 
186e985b929SDavid van Moolenbroek    @deprecated These macros are deprecated because their naming is inconsistent
187e985b929SDavid van Moolenbroek      with the rest of Libevent.  Use the evtimer_* macros instead.
188e985b929SDavid van Moolenbroek    @{
189e985b929SDavid van Moolenbroek  */
190e985b929SDavid van Moolenbroek #define timeout_add(ev, tv)		event_add((ev), (tv))
191e985b929SDavid van Moolenbroek #define timeout_set(ev, cb, arg)	event_set((ev), -1, 0, (cb), (arg))
192e985b929SDavid van Moolenbroek #define timeout_del(ev)			event_del(ev)
193e985b929SDavid van Moolenbroek #define timeout_pending(ev, tv)		event_pending((ev), EV_TIMEOUT, (tv))
194e985b929SDavid van Moolenbroek #define timeout_initialized(ev)		event_initialized(ev)
195e985b929SDavid van Moolenbroek /**@}*/
196e985b929SDavid van Moolenbroek 
197e985b929SDavid van Moolenbroek /**
198e985b929SDavid van Moolenbroek    @name signal_* macros
199e985b929SDavid van Moolenbroek 
200e985b929SDavid van Moolenbroek    @deprecated These macros are deprecated because their naming is inconsistent
201e985b929SDavid van Moolenbroek      with the rest of Libevent.  Use the evsignal_* macros instead.
202e985b929SDavid van Moolenbroek    @{
203e985b929SDavid van Moolenbroek  */
204e985b929SDavid van Moolenbroek #define signal_add(ev, tv)		event_add((ev), (tv))
205e985b929SDavid van Moolenbroek #define signal_set(ev, x, cb, arg)				\
206e985b929SDavid van Moolenbroek 	event_set((ev), (x), EV_SIGNAL|EV_PERSIST, (cb), (arg))
207e985b929SDavid van Moolenbroek #define signal_del(ev)			event_del(ev)
208e985b929SDavid van Moolenbroek #define signal_pending(ev, tv)		event_pending((ev), EV_SIGNAL, (tv))
209e985b929SDavid van Moolenbroek #define signal_initialized(ev)		event_initialized(ev)
210e985b929SDavid van Moolenbroek /**@}*/
211e985b929SDavid van Moolenbroek 
212e985b929SDavid van Moolenbroek #ifndef EVENT_FD
213e985b929SDavid van Moolenbroek /* These macros are obsolete; use event_get_fd and event_get_signal instead. */
214e985b929SDavid van Moolenbroek #define EVENT_FD(ev)		((int)event_get_fd(ev))
215e985b929SDavid van Moolenbroek #define EVENT_SIGNAL(ev)	event_get_signal(ev)
216e985b929SDavid van Moolenbroek #endif
217e985b929SDavid van Moolenbroek 
218e985b929SDavid van Moolenbroek #ifdef __cplusplus
219e985b929SDavid van Moolenbroek }
220e985b929SDavid van Moolenbroek #endif
221e985b929SDavid van Moolenbroek 
222e985b929SDavid van Moolenbroek #endif /* _EVENT2_EVENT_COMPAT_H_ */
223