00001 00025 #ifndef _PURPLE_DNSQUERY_H_ 00026 #define _PURPLE_DNSQUERY_H_ 00027 00028 #include <glib.h> 00029 #include "eventloop.h" 00030 #include "account.h" 00031 00032 typedef struct _PurpleDnsQueryData PurpleDnsQueryData; 00033 00039 typedef void (*PurpleDnsQueryConnectFunction)(GSList *hosts, gpointer data, const char *error_message); 00040 00044 typedef void (*PurpleDnsQueryResolvedCallback) (PurpleDnsQueryData *query_data, GSList *hosts); 00045 typedef void (*PurpleDnsQueryFailedCallback) (PurpleDnsQueryData *query_data, const gchar *error_message); 00046 00050 typedef struct 00051 { 00052 /* If implemented, the UI is responsible for DNS queries */ 00053 gboolean (*resolve_host)(PurpleDnsQueryData *query_data, PurpleDnsQueryResolvedCallback resolved_cb, PurpleDnsQueryFailedCallback failed_cb); 00054 00055 /* After destroy is called, query_data will be feed, so this must 00056 * cancel any further use of it the UI would do. Unneeded if 00057 * resolve_host is not implemented. 00058 */ 00059 void (*destroy)(PurpleDnsQueryData *query_data); 00060 00061 void (*_purple_reserved1)(void); 00062 void (*_purple_reserved2)(void); 00063 void (*_purple_reserved3)(void); 00064 void (*_purple_reserved4)(void); 00065 } PurpleDnsQueryUiOps; 00066 00067 #ifdef __cplusplus 00068 extern "C" { 00069 #endif 00070 00071 /**************************************************************************/ 00073 /**************************************************************************/ 00088 PurpleDnsQueryData *purple_dnsquery_a(const char *hostname, int port, PurpleDnsQueryConnectFunction callback, gpointer data); 00089 00096 void purple_dnsquery_destroy(PurpleDnsQueryData *query_data); 00097 00105 void purple_dnsquery_set_ui_ops(PurpleDnsQueryUiOps *ops); 00106 00113 PurpleDnsQueryUiOps *purple_dnsquery_get_ui_ops(void); 00114 00121 char *purple_dnsquery_get_host(PurpleDnsQueryData *query_data); 00122 00129 unsigned short purple_dnsquery_get_port(PurpleDnsQueryData *query_data); 00130 00134 void purple_dnsquery_init(void); 00135 00139 void purple_dnsquery_uninit(void); 00140 00143 #ifdef __cplusplus 00144 } 00145 #endif 00146 00147 #endif /* _PURPLE_DNSQUERY_H_ */