1 /**
2  * \file
3  * \brief Public interfaces to getdns, include in your application to use getdns API.
4  *
5  * This source was taken from the original pseudo-implementation by
6  * Paul Hoffman.
7  */
8 
9 /*
10  * Copyright (c) 2013, NLNet Labs, Verisign, Inc.
11  * All rights reserved.
12  *
13  * Redistribution and use in source and binary forms, with or without
14  * modification, are permitted provided that the following conditions are met:
15  * * Redistributions of source code must retain the above copyright
16  *   notice, this list of conditions and the following disclaimer.
17  * * Redistributions in binary form must reproduce the above copyright
18  *   notice, this list of conditions and the following disclaimer in the
19  *   documentation and/or other materials provided with the distribution.
20  * * Neither the names of the copyright holders nor the
21  *   names of its contributors may be used to endorse or promote products
22  *   derived from this software without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
25  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27  * DISCLAIMED. IN NO EVENT SHALL Verisign, Inc. BE LIABLE FOR ANY
28  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 
36 #ifndef GETDNS_EXT_LIBEV_H
37 #define GETDNS_EXT_LIBEV_H
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 #include <getdns/getdns.h>
44 #include <getdns/getdns_extra.h>
45 struct ev_loop;
46 
47 
48 /**
49  *  \ingroup eventloops
50  */
51 /**
52  * Associate the libev ev_loop with the context, so that all
53  * asynchronous requests will schedule Input/Output with it.
54  * Synchronous requests will still use a default eventloop based on `poll()`.
55  * Applications need to @code #include <getdns/getdns_ext_libev.h> @endcode
56  * and link with libgetdns_ext_ev to use this function.
57  * getdns needs to have been configured with --with-libev for this
58  * extension to be available.
59  * @param context The context to configure
60  * @param ev_loop The libev event loop to associate with this context.
61  * @return GETDNS_RETURN_GOOD when successful
62  * @return GETDNS_RETURN_BAD_CONTEXT when context is NULL
63  * @return GETDNS_RETURN_INVALID_PARAMETER when ev_loop is NULL
64  * @return GETDNS_RETURN_MEMORY_ERROR when memory could not be allocated
65  */
66 getdns_return_t
67 getdns_extension_set_libev_loop(struct getdns_context *context,
68     struct ev_loop *ev_loop);
69 
70 #ifdef __cplusplus
71 }
72 #endif
73 #endif
74