Add GResolver, a glib-ish interface to DNS
[platform/upstream/glib.git] / gio / gresolver.h
1 /* GIO - GLib Input, Output and Streaming Library
2  *
3  * Copyright (C) 2008 Red Hat, Inc.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General
16  * Public License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */
20
21 #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
22 #error "Only <gio/gio.h> can be included directly."
23 #endif
24
25 #ifndef __G_RESOLVER_H__
26 #define __G_RESOLVER_H__
27
28 #include <gio/giotypes.h>
29
30 G_BEGIN_DECLS
31
32 #define G_TYPE_RESOLVER         (g_resolver_get_type ())
33 #define G_RESOLVER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_RESOLVER, GResolver))
34 #define G_RESOLVER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_RESOLVER, GResolverClass))
35 #define G_IS_RESOLVER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_RESOLVER))
36 #define G_IS_RESOLVER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_RESOLVER))
37 #define G_RESOLVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_RESOLVER, GResolverClass))
38
39 struct _GResolver {
40   GObject parent_instance;
41
42 };
43
44 typedef struct {
45   GObjectClass parent_class;
46
47   GList * ( *lookup_by_name)           (GResolver            *resolver,
48                                         const gchar          *hostname,
49                                         GCancellable         *cancellable,
50                                         GError              **error);
51   void    ( *lookup_by_name_async)     (GResolver            *resolver,
52                                         const gchar          *hostname,
53                                         GCancellable         *cancellable,
54                                         GAsyncReadyCallback   callback,
55                                         gpointer              user_data);
56   GList * ( *lookup_by_name_finish)    (GResolver            *resolver,
57                                         GAsyncResult         *result,
58                                         GError              **error);
59
60   gchar * ( *lookup_by_address)        (GResolver            *resolver,
61                                         GInetAddress         *address,
62                                         GCancellable         *cancellable,
63                                         GError              **error);
64   void    ( *lookup_by_address_async)  (GResolver            *resolver,
65                                         GInetAddress         *address,
66                                         GCancellable         *cancellable,
67                                         GAsyncReadyCallback   callback,
68                                         gpointer              user_data);
69   gchar * ( *lookup_by_address_finish) (GResolver            *resolver,
70                                         GAsyncResult         *result,
71                                         GError              **error);
72
73   GList * ( *lookup_service)           (GResolver            *resolver,
74                                         const gchar          *rrname,
75                                         GCancellable         *cancellable,
76                                         GError              **error);
77   void    ( *lookup_service_async)     (GResolver            *resolver,
78                                         const gchar          *rrname,
79                                         GCancellable         *cancellable,
80                                         GAsyncReadyCallback   callback,
81                                         gpointer              user_data);
82   GList * ( *lookup_service_finish)    (GResolver            *resolver,
83                                         GAsyncResult         *result,
84                                         GError              **error);
85
86   /* Padding for future expansion */
87   void (*_g_reserved1) (void);
88   void (*_g_reserved2) (void);
89   void (*_g_reserved3) (void);
90   void (*_g_reserved4) (void);
91   void (*_g_reserved5) (void);
92   void (*_g_reserved6) (void);
93
94 } GResolverClass;
95
96 GType      g_resolver_get_type                  (void) G_GNUC_CONST;
97 GResolver *g_resolver_get_default               (void);
98 void       g_resolver_set_default               (GResolver            *resolver);
99
100 GList     *g_resolver_lookup_by_name            (GResolver            *resolver,
101                                                  const gchar          *hostname,
102                                                  GCancellable         *cancellable,
103                                                  GError              **error);
104 void       g_resolver_lookup_by_name_async      (GResolver            *resolver,
105                                                  const gchar          *hostname,
106                                                  GCancellable         *cancellable,
107                                                  GAsyncReadyCallback   callback,
108                                                  gpointer              user_data);
109 GList     *g_resolver_lookup_by_name_finish     (GResolver            *resolver,
110                                                  GAsyncResult         *result,
111                                                  GError              **error);
112
113 void       g_resolver_free_addresses            (GList                *addresses);
114
115 gchar     *g_resolver_lookup_by_address         (GResolver            *resolver,
116                                                  GInetAddress         *address,
117                                                  GCancellable         *cancellable,
118                                                  GError              **error);
119 void       g_resolver_lookup_by_address_async   (GResolver            *resolver,
120                                                  GInetAddress         *address,
121                                                  GCancellable         *cancellable,
122                                                  GAsyncReadyCallback   callback,
123                                                  gpointer              user_data);
124 gchar     *g_resolver_lookup_by_address_finish  (GResolver            *resolver,
125                                                  GAsyncResult         *result,
126                                                  GError              **error);
127
128 GList     *g_resolver_lookup_service            (GResolver            *resolver,
129                                                  const gchar          *service,
130                                                  const gchar          *protocol,
131                                                  const gchar          *domain,
132                                                  GCancellable         *cancellable,
133                                                  GError              **error);
134 void       g_resolver_lookup_service_async      (GResolver            *resolver,
135                                                  const gchar          *service,
136                                                  const gchar          *protocol,
137                                                  const gchar          *domain,
138                                                  GCancellable         *cancellable,
139                                                  GAsyncReadyCallback   callback,
140                                                  gpointer              user_data);
141 GList     *g_resolver_lookup_service_finish     (GResolver            *resolver,
142                                                  GAsyncResult         *result,
143                                                  GError              **error);
144
145 void       g_resolver_free_targets              (GList                *targets);
146
147 /**
148  * G_RESOLVER_ERROR:
149  *
150  * Error domain for #GResolver. Errors in this domain will be from the
151  * #GResolverError enumeration. See #GError for more information on
152  * error domains.
153  **/
154 #define G_RESOLVER_ERROR (g_resolver_error_quark ())
155 GQuark g_resolver_error_quark (void);
156
157 G_END_DECLS
158
159 #endif /* __G_RESOLVER_H__ */