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