loudmouth/lm-resolver.c
author Mikael Hallendal <micke@imendio.com>
Sun, 13 Jul 2008 23:54:50 +0200
changeset 456 56cc6a7b0dc7
parent 455 d42ef653a60c
child 461 f7c5f4b5dadd
permissions -rw-r--r--
Fixed some spaces
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
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
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    16
 * License along with this program; if not, write to the
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    17
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    18
 * Boston, MA 02111-1307, USA.
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    19
 */
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    20
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    21
#include <config.h>
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    22
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    23
#include "lm-marshal.h"
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    24
#include "lm-resolver.h"
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 GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), LM_TYPE_RESOLVER, LmResolverPriv))
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    27
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    28
typedef struct LmResolverPriv LmResolverPriv;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    29
struct LmResolverPriv {
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    30
        LmResolverCallback  callback;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    31
        gpointer            user_data;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    32
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    33
        /* Properties */
456
56cc6a7b0dc7 Fixed some spaces
Mikael Hallendal <micke@imendio.com>
parents: 455
diff changeset
    34
        LmResolverType      type;
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    35
        gchar              *host;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    36
        gchar              *domain;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    37
        gchar              *srv;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    38
};
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    39
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    40
static void     resolver_finalize            (GObject           *object);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    41
static void     resolver_get_property        (GObject           *object,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    42
					   guint              param_id,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    43
					   GValue            *value,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    44
					   GParamSpec        *pspec);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    45
static void     resolver_set_property        (GObject           *object,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    46
					   guint              param_id,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    47
					   const GValue      *value,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    48
					   GParamSpec        *pspec);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    49
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    50
G_DEFINE_TYPE (LmResolver, lm_resolver, G_TYPE_OBJECT)
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    51
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    52
enum {
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    53
	PROP_0,
455
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    54
        PROP_TYPE,
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    55
        PROP_HOST,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    56
        PROP_DOMAIN,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    57
        PROP_SRV
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    58
};
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    59
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    60
enum {
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    61
        SIGNAL_NAME,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    62
	LAST_SIGNAL
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    63
};
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    64
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    65
static guint signals[LAST_SIGNAL] = { 0 };
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    66
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    67
static void
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    68
lm_resolver_class_init (LmResolverClass *class)
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    69
{
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    70
	GObjectClass *object_class = G_OBJECT_CLASS (class);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    71
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    72
	object_class->finalize     = resolver_finalize;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    73
	object_class->get_property = resolver_get_property;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    74
	object_class->set_property = resolver_set_property;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    75
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    76
        g_object_class_install_property (object_class,
455
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    77
                                         PROP_TYPE,
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    78
					 g_param_spec_int ("type",
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    79
                                                           "Type",
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    80
                                                           "Resolver Type",
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    81
                                                           LM_RESOLVER_HOST,
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    82
                                                           LM_RESOLVER_SRV,
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    83
                                                           LM_RESOLVER_HOST,
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    84
                                                           G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    85
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    86
        g_object_class_install_property (object_class,
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    87
                                         PROP_HOST,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    88
					 g_param_spec_string ("host",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    89
							      "Host",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    90
							      "Host to lookup",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    91
                                                              NULL,
455
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
    92
                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    93
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    94
        g_object_class_install_property (object_class,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    95
                                         PROP_DOMAIN,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    96
					 g_param_spec_string ("domain",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    97
							      "Domain",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    98
							      "Domain to lookup",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
    99
                                                              NULL,
455
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
   100
                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   101
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   102
        g_object_class_install_property (object_class,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   103
                                         PROP_SRV,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   104
					 g_param_spec_string ("srv",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   105
							      "Srv",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   106
							      "Service to lookup",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   107
                                                              NULL,
455
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
   108
                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   109
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   110
	signals[SIGNAL_NAME] = 
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   111
		g_signal_new ("signal-name",
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   112
			      G_OBJECT_CLASS_TYPE (object_class),
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   113
			      G_SIGNAL_RUN_LAST,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   114
			      0,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   115
			      NULL, NULL,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   116
			      lm_marshal_VOID__INT,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   117
			      G_TYPE_NONE, 
456
56cc6a7b0dc7 Fixed some spaces
Mikael Hallendal <micke@imendio.com>
parents: 455
diff changeset
   118
                              1, G_TYPE_INT);
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   119
	
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   120
	g_type_class_add_private (object_class, sizeof (LmResolverPriv));
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   121
}
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   122
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   123
static void
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   124
lm_resolver_init (LmResolver *resolver)
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   125
{
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   126
	LmResolverPriv *priv;
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   127
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   128
	priv = GET_PRIV (resolver);
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   129
}
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   130
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   131
static void
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   132
resolver_finalize (GObject *object)
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   133
{
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   134
	LmResolverPriv *priv;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   135
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   136
	priv = GET_PRIV (object);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   137
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   138
	(G_OBJECT_CLASS (lm_resolver_parent_class)->finalize) (object);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   139
}
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   140
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   141
static void
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   142
resolver_get_property (GObject    *object,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   143
                       guint       param_id,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   144
                       GValue     *value,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   145
                       GParamSpec *pspec)
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   146
{
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   147
	LmResolverPriv *priv;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   148
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   149
	priv = GET_PRIV (object);
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   150
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   151
	switch (param_id) {
455
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
   152
        case PROP_TYPE:
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
   153
                g_value_set_int (value, priv->type);
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
   154
                break;
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   155
        case PROP_HOST:
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   156
		g_value_set_string (value, priv->host);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   157
		break;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   158
	case PROP_DOMAIN:
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   159
		g_value_set_string (value, priv->domain);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   160
		break;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   161
        case PROP_SRV:
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   162
		g_value_set_string (value, priv->srv);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   163
		break;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   164
	default:
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   165
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   166
		break;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   167
	};
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   168
}
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   169
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   170
static void
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   171
resolver_set_property (GObject      *object,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   172
                       guint         param_id,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   173
                       const GValue *value,
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   174
                       GParamSpec   *pspec)
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   175
{
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   176
	LmResolverPriv *priv;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   177
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   178
	priv = GET_PRIV (object);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   179
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   180
	switch (param_id) {
455
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
   181
        case PROP_TYPE:
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
   182
                priv->type = g_value_get_int (value);
d42ef653a60c Added type property to LmResolver
Mikael Hallendal <micke@imendio.com>
parents: 454
diff changeset
   183
                break;
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   184
        case PROP_HOST:
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   185
                g_free (priv->host);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   186
		priv->host = g_value_dup_string (value);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   187
		break;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   188
	case PROP_DOMAIN:
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   189
                g_free (priv->domain);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   190
		priv->domain = g_value_dup_string (value);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   191
		break;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   192
	case PROP_SRV:
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   193
                g_free (priv->srv);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   194
                priv->srv = g_value_dup_string (value);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   195
		break;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   196
	default:
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   197
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   198
		break;
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   199
	};
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   200
}
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   201
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   202
LmResolver *
454
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   203
lm_resolver_new_for_host (const gchar        *host,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   204
                          LmResolverCallback  callback,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   205
                          gpointer            user_data)
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   206
{
454
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   207
        return g_object_new (LM_TYPE_RESOLVER,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   208
                             "type", LM_RESOLVER_HOST,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   209
                             "host", host,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   210
                             NULL);
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   211
}
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   212
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   213
LmResolver *
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   214
lm_resolver_new_for_srv (const gchar        *domain, 
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   215
                         const gchar        *srv,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   216
                         LmResolverCallback  callback,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   217
                         gpointer            user_data)
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   218
{
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   219
        return g_object_new (LM_TYPE_RESOLVER, 
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   220
                             "type", LM_RESOLVER_SRV,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   221
                             "domain", domain,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   222
                             "srv", srv,
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   223
                             NULL);
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   224
}
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   225
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   226
void
454
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   227
lm_resolver_lookup (LmResolver *resolver)
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   228
{
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   229
        if (!LM_RESOLVER_GET_CLASS(resolver)) {
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   230
                g_assert_not_reached ();
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   231
        }
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   232
454
18ffac09f030 Changed so that we create a resolver with various arguments depending on type.
Mikael Hallendal <micke@imendio.com>
parents: 453
diff changeset
   233
        LM_RESOLVER_GET_CLASS(resolver)->lookup (resolver);
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   234
}
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   235
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   236
void
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   237
lm_resolver_cancel (LmResolver *resolver)
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   238
{
453
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   239
        if (!LM_RESOLVER_GET_CLASS(resolver)->cancel) {
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   240
                g_assert_not_reached ();
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   241
        }
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   242
deebf7d6750b Made LmResolver an object for subclassing instead of an interface
Mikael Hallendal <micke@imendio.com>
parents: 452
diff changeset
   243
        LM_RESOLVER_GET_CLASS(resolver)->cancel (resolver);
452
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   244
}
ad59c48027f2 Added LmResolver interface.
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   245