Frameworks/libpurple.framework/Versions/0.6.2/Headers/dnssrv.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 2535 Frameworks/libpurple.framework/Versions/0.6.0/Headers/dnssrv.h@39c3c161de14
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
Evan@653
     1
/**
Evan@653
     2
 * @file dnssrv.h
Evan@653
     3
 */
Evan@653
     4
Evan@653
     5
/* purple
Evan@653
     6
 *
Evan@653
     7
 * Copyright (C) 2005, Thomas Butter <butter@uni-mannheim.de>
Evan@653
     8
 *
Evan@653
     9
 * This program is free software; you can redistribute it and/or modify
Evan@653
    10
 * it under the terms of the GNU General Public License as published by
Evan@653
    11
 * the Free Software Foundation; either version 2 of the License, or
Evan@653
    12
 * (at your option) any later version.
Evan@653
    13
 *
Evan@653
    14
 * This program is distributed in the hope that it will be useful,
Evan@653
    15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Evan@653
    16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Evan@653
    17
 * GNU General Public License for more details.
Evan@653
    18
 *
Evan@653
    19
 * You should have received a copy of the GNU General Public License
Evan@653
    20
 * along with this program; if not, write to the Free Software
Evan@653
    21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
Evan@653
    22
 */
Evan@653
    23
Evan@653
    24
#ifndef _PURPLE_DNSSRV_H
Evan@653
    25
#define _PURPLE_DNSSRV_H
Evan@653
    26
Evan@653
    27
#ifdef __cplusplus
Evan@653
    28
extern "C" {
Evan@653
    29
#endif
Evan@653
    30
zacw@2069
    31
typedef struct _PurpleSrvQueryData PurpleSrvQueryData;
Evan@653
    32
typedef struct _PurpleSrvResponse PurpleSrvResponse;
zacw@2069
    33
typedef struct _PurpleTxtResponse PurpleTxtResponse;
zacw@2069
    34
zacw@2069
    35
#include <glib.h>
Evan@653
    36
Evan@653
    37
struct _PurpleSrvResponse {
Evan@653
    38
	char hostname[256];
Evan@653
    39
	int port;
Evan@653
    40
	int weight;
Evan@653
    41
	int pref;
Evan@653
    42
};
Evan@653
    43
zacw@2535
    44
/**
zacw@2535
    45
 * @param resp An array of PurpleSrvResponse of size results.  The array
zacw@2535
    46
 *        is sorted based on the order described in the DNS SRV RFC.
zacw@2535
    47
 *        Users of this API should try each record in resp in order,
zacw@2535
    48
 *        starting at the beginning.
zacw@2535
    49
 */
Evan@653
    50
typedef void (*PurpleSrvCallback)(PurpleSrvResponse *resp, int results, gpointer data);
Evan@653
    51
Evan@653
    52
/**
zacw@2069
    53
 * Callback that returns the data retrieved from a DNS TXT lookup.
zacw@2069
    54
 *
zacw@2535
    55
 * @param responses   A GList of PurpleTxtResponse objects.
zacw@2069
    56
 * @param data        The extra data passed to purple_txt_resolve.
zacw@2069
    57
 */
zacw@2535
    58
typedef void (*PurpleTxtCallback)(GList *responses, gpointer data);
zacw@2069
    59
zacw@2069
    60
/**
Evan@653
    61
 * Queries an SRV record.
Evan@653
    62
 *
Evan@653
    63
 * @param protocol Name of the protocol (e.g. "sip")
Evan@653
    64
 * @param transport Name of the transport ("tcp" or "udp")
Evan@653
    65
 * @param domain Domain name to query (e.g. "blubb.com")
Evan@653
    66
 * @param cb A callback which will be called with the results
Evan@653
    67
 * @param extradata Extra data to be passed to the callback
Evan@653
    68
 */
Evan@653
    69
PurpleSrvQueryData *purple_srv_resolve(const char *protocol, const char *transport, const char *domain, PurpleSrvCallback cb, gpointer extradata);
Evan@653
    70
Evan@653
    71
/**
Evan@653
    72
 * Cancel an SRV DNS query.
Evan@653
    73
 *
Evan@653
    74
 * @param query_data The request to cancel.
Evan@653
    75
 */
Evan@653
    76
void purple_srv_cancel(PurpleSrvQueryData *query_data);
Evan@653
    77
zacw@2069
    78
/**
zacw@2069
    79
 * Queries an TXT record.
zacw@2069
    80
 *
zacw@2069
    81
 * @param owner Name of the protocol (e.g. "_xmppconnect")
zacw@2069
    82
 * @param domain Domain name to query (e.g. "blubb.com")
zacw@2069
    83
 * @param cb A callback which will be called with the results
zacw@2069
    84
 * @param extradata Extra data to be passed to the callback
zacw@2069
    85
 *
zacw@2069
    86
 * @since 2.6.0
zacw@2069
    87
 */
zacw@2069
    88
PurpleSrvQueryData *purple_txt_resolve(const char *owner, const char *domain, PurpleTxtCallback cb, gpointer extradata);
zacw@2069
    89
zacw@2069
    90
/**
zacw@2069
    91
 * Cancel an TXT DNS query.
zacw@2069
    92
 *
zacw@2069
    93
 * @param query_data The request to cancel.
zacw@2069
    94
 * @since 2.6.0
zacw@2069
    95
 */
zacw@2069
    96
void purple_txt_cancel(PurpleSrvQueryData *query_data);
zacw@2069
    97
zacw@2069
    98
/**
zacw@2069
    99
 * Get the value of the current TXT record.
zacw@2069
   100
 *
zacw@2069
   101
 * @param resp  The TXT response record
zacw@2069
   102
 * @returns The value of the current TXT record.
zacw@2069
   103
 * @since 2.6.0
zacw@2069
   104
 */
zacw@2069
   105
const gchar *purple_txt_response_get_content(PurpleTxtResponse *resp);
zacw@2069
   106
zacw@2069
   107
/**
zacw@2069
   108
 * Destroy a TXT DNS response object.
zacw@2069
   109
 *
zacw@2069
   110
 * @param response The PurpleTxtResponse to destroy.
zacw@2069
   111
 * @since 2.6.0
zacw@2069
   112
 */
zacw@2069
   113
void purple_txt_response_destroy(PurpleTxtResponse *resp);
zacw@2069
   114
Evan@653
   115
#ifdef __cplusplus
Evan@653
   116
}
Evan@653
   117
#endif
Evan@653
   118
Evan@653
   119
#endif /* _PURPLE_DNSSRV_H */