Asynchronous interface for Sofia DNS Resolver. More...
#include "sofia-resolv/sres_config.h"
Go to the source code of this file.
| Defines | |
| #define | SOFIA_RESOLV_SRES_ASYNC_H | 
| Defined when <sofia-resolv/sres_async.h> has been included. | |
| Typedefs | |
| typedef SRES_ASYNC_T | sres_async_t | 
| Application-defined type for context used by asynchronous operation. | |
| typedef int | sres_update_f (sres_async_t *async, sres_socket_t new_socket, sres_socket_t old_socket) | 
| Prototype for update function. | |
| typedef int | sres_schedule_f (sres_async_t *async, unsigned long interval) | 
| Prototype for scheduler function. | |
| Functions | |
| SRESPUBFUN sres_async_t * | sres_resolver_set_async (sres_resolver_t *res, sres_update_f *update, sres_async_t *async, int update_all) | 
| Set asynchronous operation data. | |
| SRESPUBFUN sres_async_t * | sres_resolver_get_async (sres_resolver_t const *res, sres_update_f *update) | 
| Get async operation data. | |
| SRESPUBFUN int | sres_resolver_sockets (sres_resolver_t *, sres_socket_t *sockets, int n) | 
| Create sockets for resolver. | |
| SRESPUBFUN void | sres_resolver_timer (sres_resolver_t *, int dummy) | 
| Resolver timer function. | |
| SRESPUBFUN int | sres_resolver_set_timer_cb (sres_resolver_t *res, sres_schedule_f *callback, sres_async_t *async) | 
| Register resolver timer callback. | |
| SRESPUBFUN int | sres_resolver_receive (sres_resolver_t *, int socket) | 
| Receive DNS response from socket. | |
| SRESPUBFUN int | sres_resolver_error (sres_resolver_t *, int socket) | 
| Receive error message from socket. | |
Asynchronous interface for Sofia DNS Resolver.
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <sofia-resolv/sres.h> #include <sofia-resolv/sres_async.h>
| #define SOFIA_RESOLV_SRES_ASYNC_H | 
Defined when <sofia-resolv/sres_async.h> has been included.
| typedef SRES_ASYNC_T sres_async_t | 
Application-defined type for context used by asynchronous operation.
| typedef int sres_schedule_f(sres_async_t *async, unsigned long interval) | 
Prototype for scheduler function.
This function is called when a timer callback is to be scheduled.
| async | asynchronous object (registered with sres_resolver_set_async()) | |
| interval | interval in milliseconds | 
| 0 | when successful | |
| -1 | upon an error | 
| typedef int sres_update_f(sres_async_t *async, sres_socket_t new_socket, sres_socket_t old_socket) | 
Prototype for update function.
This kind of function is called when the nameserver configuration has been updated.
If the old_socket is not -1, it indicates that old_socket will be closed and it should be removed from poll() or select() set.
If the new_socket is not -1, it indicates that resolver has created new socket that should be added to the poll() or select() set.
| SRESPUBFUN int sres_resolver_error | ( | sres_resolver_t * | res, | |
| int | socket | |||
| ) | 
Receive error message from socket.
| SRESPUBFUN sres_async_t* sres_resolver_get_async | ( | sres_resolver_t const * | res, | |
| sres_update_f * | callback | |||
| ) | 
Get async operation data.
| SRESPUBFUN int sres_resolver_receive | ( | sres_resolver_t * | res, | |
| int | socket | |||
| ) | 
Receive DNS response from socket.
| SRESPUBFUN sres_async_t* sres_resolver_set_async | ( | sres_resolver_t * | res, | |
| sres_update_f * | callback, | |||
| sres_async_t * | async, | |||
| int | update_all | |||
| ) | 
Set asynchronous operation data.
Set asynchronous operation data.
| SRESPUBFUN int sres_resolver_set_timer_cb | ( | sres_resolver_t * | res, | |
| sres_schedule_f * | callback, | |||
| sres_async_t * | async | |||
| ) | 
Register resolver timer callback.
| SRESPUBFUN int sres_resolver_sockets | ( | sres_resolver_t * | res, | |
| sres_socket_t * | return_sockets, | |||
| int | n | |||
| ) | 
Create sockets for resolver.
| SRESPUBFUN void sres_resolver_timer | ( | sres_resolver_t * | res, | |
| int | dummy | |||
| ) | 
Resolver timer function.
The function sresolver_timer() should be called in regular intervals. We recommend calling it in 500 ms intervals.
| res | pointer to resolver object | |
| dummy | argument for compatibility | 
Every time it is called it goes through all query structures, and retransmits all the query messages, which have not been answered yet.