author | Frank Zschockelt <lm@freakysoft.de> |
Thu, 04 Feb 2016 19:18:03 +0100 | |
changeset 690 | 7ccf2113ec5f |
parent 607 | e2bd14357c9a |
permissions | -rw-r--r-- |
516
4dd3aa6b83e5
Change the tab width to 4 steps in the emacs headers
Mikael Hallendal <micke@imendio.com>
parents:
515
diff
changeset
|
1 |
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
452
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
2 |
/* |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
3 |
* Copyright (C) 2008 Imendio AB |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
4 |
* |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
6 |
* modify it under the terms of the GNU Lesser General Public License as |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; either version 2 of the |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
8 |
* License, or (at your option) any later version. |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
9 |
* |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
10 |
* This program is distributed in the hope that it will be useful, |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
13 |
* Lesser General Public License for more details. |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
14 |
* |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU Lesser General Public |
690
7ccf2113ec5f
Update the postal address of the FSF
Frank Zschockelt <lm@freakysoft.de>
parents:
607
diff
changeset
|
16 |
* License along with this program; if not, see <https://www.gnu.org/licenses> |
452
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
17 |
*/ |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
18 |
|
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
19 |
#ifndef __LM_RESOLVER_H__ |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
20 |
#define __LM_RESOLVER_H__ |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
21 |
|
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
22 |
#include <glib-object.h> |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
23 |
|
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
24 |
G_BEGIN_DECLS |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
25 |
|
453
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
26 |
#define LM_TYPE_RESOLVER (lm_resolver_get_type ()) |
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
27 |
#define LM_RESOLVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LM_TYPE_RESOLVER, LmResolver)) |
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
28 |
#define LM_RESOLVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LM_TYPE_RESOLVER, LmResolverClass)) |
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
29 |
#define LM_IS_RESOLVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LM_TYPE_RESOLVER)) |
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
30 |
#define LM_IS_RESOLVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LM_TYPE_RESOLVER)) |
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
31 |
#define LM_RESOLVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), LM_TYPE_RESOLVER, LmResolverClass)) |
452
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
32 |
|
453
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
33 |
typedef struct LmResolver LmResolver; |
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
34 |
typedef struct LmResolverClass LmResolverClass; |
452
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
35 |
|
453
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
36 |
struct LmResolver { |
518
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
37 |
GObject parent; |
452
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
38 |
}; |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
39 |
|
453
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
40 |
struct LmResolverClass { |
518
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
41 |
GObjectClass parent_class; |
607 | 42 |
|
518
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
43 |
/* <vtable> */ |
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
44 |
void (*lookup) (LmResolver *resolver); |
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
45 |
void (*cancel) (LmResolver *resolver); |
453
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
46 |
}; |
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
47 |
|
454
18ffac09f030
Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents:
453
diff
changeset
|
48 |
typedef enum { |
518
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
49 |
LM_RESOLVER_HOST, |
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
50 |
LM_RESOLVER_SRV |
454
18ffac09f030
Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents:
453
diff
changeset
|
51 |
} LmResolverType; |
18ffac09f030
Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents:
453
diff
changeset
|
52 |
|
467
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
53 |
typedef enum { |
518
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
54 |
LM_RESOLVER_RESULT_OK, |
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
55 |
LM_RESOLVER_RESULT_FAILED, |
cdd6a0c5b439
Went over all of the files and made sure they all were indented the same way.
Mikael Hallendal <micke@imendio.com>
parents:
516
diff
changeset
|
56 |
LM_RESOLVER_RESULT_CANCELLED |
467
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
57 |
} LmResolverResult; |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
58 |
|
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
59 |
typedef void (*LmResolverCallback) (LmResolver *resolver, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
60 |
LmResolverResult result, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
61 |
gpointer user_data); |
452
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
62 |
|
467
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
63 |
GType lm_resolver_get_type (void); |
478
acce45e212a6
Changed lm_resolver_create_srv_string to be internal to LmResolvers
Mikael Hallendal <micke@imendio.com>
parents:
475
diff
changeset
|
64 |
LmResolver * lm_resolver_new (GMainContext *context); |
acce45e212a6
Changed lm_resolver_create_srv_string to be internal to LmResolvers
Mikael Hallendal <micke@imendio.com>
parents:
475
diff
changeset
|
65 |
|
467
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
66 |
LmResolver * lm_resolver_new_for_host (const gchar *host, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
67 |
LmResolverCallback callback, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
68 |
gpointer user_data); |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
69 |
LmResolver * lm_resolver_new_for_service (const gchar *domain, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
70 |
const gchar *service, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
71 |
const gchar *protocol, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
72 |
LmResolverCallback callback, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
73 |
gpointer user_data); |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
74 |
void lm_resolver_lookup (LmResolver *resolver); |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
75 |
void lm_resolver_cancel (LmResolver *resolver); |
607 | 76 |
/* To iterate through the results */ |
467
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
77 |
struct addrinfo * lm_resolver_results_get_next (LmResolver *resolver); |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
78 |
void lm_resolver_results_reset (LmResolver *resolver); |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
79 |
|
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
80 |
/* Only for sub classes */ |
607 | 81 |
gchar * _lm_resolver_create_srv_string (const gchar *domain, |
478
acce45e212a6
Changed lm_resolver_create_srv_string to be internal to LmResolvers
Mikael Hallendal <micke@imendio.com>
parents:
475
diff
changeset
|
82 |
const gchar *service, |
acce45e212a6
Changed lm_resolver_create_srv_string to be internal to LmResolvers
Mikael Hallendal <micke@imendio.com>
parents:
475
diff
changeset
|
83 |
const gchar *protocol); |
acce45e212a6
Changed lm_resolver_create_srv_string to be internal to LmResolvers
Mikael Hallendal <micke@imendio.com>
parents:
475
diff
changeset
|
84 |
|
467
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
85 |
void _lm_resolver_set_result (LmResolver *resolver, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
86 |
LmResolverResult result, |
943afa7cfac5
The blocking dns resolver now works as expected.
Mikael Hallendal <micke@imendio.com>
parents:
461
diff
changeset
|
87 |
struct addrinfo *results); |
607 | 88 |
gboolean _lm_resolver_parse_srv_response (unsigned char *srv, |
89 |
int srv_len, |
|
90 |
gchar **out_server, |
|
473
2006c0c0a63d
More work on the asyncns srv lookup.
Mikael Hallendal <micke@imendio.com>
parents:
471
diff
changeset
|
91 |
guint *out_port); |
452
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
92 |
|
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
93 |
G_END_DECLS |
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
94 |
|
ad59c48027f2
Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
95 |
#endif /* __LM_RESOLVER_H__ */ |
453
deebf7d6750b
Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents:
452
diff
changeset
|
96 |