loudmouth/lm-resolver.h
author Frank Zschockelt <lm@freakysoft.de>
Sat, 11 May 2019 22:15:56 +0200
changeset 736 97f3ff94976f
parent 690 7ccf2113ec5f
permissions -rw-r--r--
Removed the last g_print calls The calls g_print() in lm-debug.c don't count, because the log handler is normally provided by the application.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
e2bd14357c9a Some style fixes
Frank Zschockelt <lm@freakysoft.de>
parents: 547
diff changeset
    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
e2bd14357c9a Some style fixes
Frank Zschockelt <lm@freakysoft.de>
parents: 547
diff changeset
    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
e2bd14357c9a Some style fixes
Frank Zschockelt <lm@freakysoft.de>
parents: 547
diff changeset
    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
e2bd14357c9a Some style fixes
Frank Zschockelt <lm@freakysoft.de>
parents: 547
diff changeset
    88
gboolean        _lm_resolver_parse_srv_response (unsigned char      *srv,
e2bd14357c9a Some style fixes
Frank Zschockelt <lm@freakysoft.de>
parents: 547
diff changeset
    89
                                                 int                 srv_len,
e2bd14357c9a Some style fixes
Frank Zschockelt <lm@freakysoft.de>
parents: 547
diff changeset
    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