|
Packit Service |
b2c451 |
/* vim: set et ts=8 sw=8: */
|
|
Packit Service |
b2c451 |
/* gclue-service-location.c
|
|
Packit Service |
b2c451 |
*
|
|
Packit Service |
b2c451 |
* Copyright 2013 Red Hat, Inc.
|
|
Packit Service |
b2c451 |
*
|
|
Packit Service |
b2c451 |
* Geoclue is free software; you can redistribute it and/or modify it under
|
|
Packit Service |
b2c451 |
* the terms of the GNU General Public License as published by the Free
|
|
Packit Service |
b2c451 |
* Software Foundation; either version 2 of the License, or (at your option)
|
|
Packit Service |
b2c451 |
* any later version.
|
|
Packit Service |
b2c451 |
*
|
|
Packit Service |
b2c451 |
* Geoclue is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
Packit Service |
b2c451 |
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
Packit Service |
b2c451 |
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
Packit Service |
b2c451 |
* details.
|
|
Packit Service |
b2c451 |
*
|
|
Packit Service |
b2c451 |
* You should have received a copy of the GNU General Public License along
|
|
Packit Service |
b2c451 |
* with Geoclue; if not, write to the Free Software Foundation, Inc.,
|
|
Packit Service |
b2c451 |
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit Service |
b2c451 |
*
|
|
Packit Service |
b2c451 |
* Author: Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
|
|
Packit Service |
b2c451 |
*/
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
#include <glib/gi18n.h>
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
#include "gclue-service-location.h"
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static void
|
|
Packit Service |
b2c451 |
gclue_service_location_initable_iface_init (GInitableIface *iface);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
struct _GClueServiceLocationPrivate
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueClientInfo *client_info;
|
|
Packit Service |
b2c451 |
char *path;
|
|
Packit Service |
b2c451 |
GDBusConnection *connection;
|
|
Packit Service |
b2c451 |
};
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
G_DEFINE_TYPE_WITH_CODE (GClueServiceLocation,
|
|
Packit Service |
b2c451 |
gclue_service_location,
|
|
Packit Service |
b2c451 |
GCLUE_DBUS_TYPE_LOCATION_SKELETON,
|
|
Packit Service |
b2c451 |
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
|
|
Packit Service |
b2c451 |
gclue_service_location_initable_iface_init)
|
|
Packit Service |
b2c451 |
G_ADD_PRIVATE (GClueServiceLocation));
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
enum
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
PROP_0,
|
|
Packit Service |
b2c451 |
PROP_CLIENT_INFO,
|
|
Packit Service |
b2c451 |
PROP_PATH,
|
|
Packit Service |
b2c451 |
PROP_CONNECTION,
|
|
Packit Service |
b2c451 |
PROP_LOCATION,
|
|
Packit Service |
b2c451 |
LAST_PROP
|
|
Packit Service |
b2c451 |
};
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static GParamSpec *gParamSpecs[LAST_PROP];
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static void
|
|
Packit Service |
b2c451 |
gclue_service_location_finalize (GObject *object)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueServiceLocationPrivate *priv = GCLUE_SERVICE_LOCATION (object)->priv;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
g_clear_pointer (&priv->path, g_free);
|
|
Packit Service |
b2c451 |
g_clear_object (&priv->connection);
|
|
Packit Service |
b2c451 |
g_clear_object (&priv->client_info);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
/* Chain up to the parent class */
|
|
Packit Service |
b2c451 |
G_OBJECT_CLASS (gclue_service_location_parent_class)->finalize (object);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static void
|
|
Packit Service |
b2c451 |
gclue_service_location_get_property (GObject *object,
|
|
Packit Service |
b2c451 |
guint prop_id,
|
|
Packit Service |
b2c451 |
GValue *value,
|
|
Packit Service |
b2c451 |
GParamSpec *pspec)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueServiceLocation *self = GCLUE_SERVICE_LOCATION (object);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
switch (prop_id) {
|
|
Packit Service |
b2c451 |
case PROP_CLIENT_INFO:
|
|
Packit Service |
b2c451 |
g_value_set_object (value, self->priv->client_info);
|
|
Packit Service |
b2c451 |
break;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
case PROP_PATH:
|
|
Packit Service |
b2c451 |
g_value_set_string (value, self->priv->path);
|
|
Packit Service |
b2c451 |
break;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
case PROP_CONNECTION:
|
|
Packit Service |
b2c451 |
g_value_set_object (value, self->priv->connection);
|
|
Packit Service |
b2c451 |
break;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
case PROP_LOCATION:
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueDBusLocation *location;
|
|
Packit Service |
b2c451 |
GClueLocation *loc;
|
|
Packit Service |
b2c451 |
GVariant *timestamp;
|
|
Packit Service |
b2c451 |
guint64 sec, usec;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
location = GCLUE_DBUS_LOCATION (object);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
timestamp = gclue_dbus_location_get_timestamp (location);
|
|
Packit Service |
b2c451 |
g_variant_get (timestamp, "(tt)", &sec, &usec);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
loc = gclue_location_new_full
|
|
Packit Service |
b2c451 |
(gclue_dbus_location_get_latitude (location),
|
|
Packit Service |
b2c451 |
gclue_dbus_location_get_longitude (location),
|
|
Packit Service |
b2c451 |
gclue_dbus_location_get_accuracy (location),
|
|
Packit Service |
b2c451 |
gclue_dbus_location_get_speed (location),
|
|
Packit Service |
b2c451 |
gclue_dbus_location_get_heading (location),
|
|
Packit Service |
b2c451 |
gclue_dbus_location_get_altitude (location),
|
|
Packit Service |
b2c451 |
sec,
|
|
Packit Service |
b2c451 |
gclue_dbus_location_get_description (location));
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
g_value_take_object (value, loc);
|
|
Packit Service |
b2c451 |
break;
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
default:
|
|
Packit Service |
b2c451 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static void
|
|
Packit Service |
b2c451 |
gclue_service_location_set_property (GObject *object,
|
|
Packit Service |
b2c451 |
guint prop_id,
|
|
Packit Service |
b2c451 |
const GValue *value,
|
|
Packit Service |
b2c451 |
GParamSpec *pspec)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueServiceLocation *self = GCLUE_SERVICE_LOCATION (object);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
switch (prop_id) {
|
|
Packit Service |
b2c451 |
case PROP_CLIENT_INFO:
|
|
Packit Service |
b2c451 |
self->priv->client_info = g_value_dup_object (value);
|
|
Packit Service |
b2c451 |
break;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
case PROP_PATH:
|
|
Packit Service |
b2c451 |
self->priv->path = g_value_dup_string (value);
|
|
Packit Service |
b2c451 |
break;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
case PROP_CONNECTION:
|
|
Packit Service |
b2c451 |
self->priv->connection = g_value_dup_object (value);
|
|
Packit Service |
b2c451 |
break;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
case PROP_LOCATION:
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueDBusLocation *location;
|
|
Packit Service |
b2c451 |
GClueLocation *loc;
|
|
Packit Service |
b2c451 |
gdouble altitude;
|
|
Packit Service |
b2c451 |
GVariant *timestamp;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
location = GCLUE_DBUS_LOCATION (object);
|
|
Packit Service |
b2c451 |
loc = g_value_get_object (value);
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_latitude
|
|
Packit Service |
b2c451 |
(location, gclue_location_get_latitude (loc));
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_longitude
|
|
Packit Service |
b2c451 |
(location, gclue_location_get_longitude (loc));
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_accuracy
|
|
Packit Service |
b2c451 |
(location, gclue_location_get_accuracy (loc));
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_description
|
|
Packit Service |
b2c451 |
(location, gclue_location_get_description (loc));
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_speed
|
|
Packit Service |
b2c451 |
(location, gclue_location_get_speed (loc));
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_heading
|
|
Packit Service |
b2c451 |
(location, gclue_location_get_heading (loc));
|
|
Packit Service |
b2c451 |
timestamp = g_variant_new
|
|
Packit Service |
b2c451 |
("(tt)",
|
|
Packit Service |
b2c451 |
(guint64) gclue_location_get_timestamp (loc),
|
|
Packit Service |
b2c451 |
(guint64) 0);
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_timestamp
|
|
Packit Service |
b2c451 |
(location, timestamp);
|
|
Packit Service |
b2c451 |
altitude = gclue_location_get_altitude (loc);
|
|
Packit Service |
b2c451 |
if (altitude != GCLUE_LOCATION_ALTITUDE_UNKNOWN)
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_altitude (location, altitude);
|
|
Packit Service |
b2c451 |
break;
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
default:
|
|
Packit Service |
b2c451 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static void
|
|
Packit Service |
b2c451 |
gclue_service_location_handle_method_call (GDBusConnection *connection,
|
|
Packit Service |
b2c451 |
const gchar *sender,
|
|
Packit Service |
b2c451 |
const gchar *object_path,
|
|
Packit Service |
b2c451 |
const gchar *interface_name,
|
|
Packit Service |
b2c451 |
const gchar *method_name,
|
|
Packit Service |
b2c451 |
GVariant *parameters,
|
|
Packit Service |
b2c451 |
GDBusMethodInvocation *invocation,
|
|
Packit Service |
b2c451 |
gpointer user_data)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueServiceLocationPrivate *priv = GCLUE_SERVICE_LOCATION (user_data)->priv;
|
|
Packit Service |
b2c451 |
GDBusInterfaceSkeletonClass *skeleton_class;
|
|
Packit Service |
b2c451 |
GDBusInterfaceVTable *skeleton_vtable;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
if (!gclue_client_info_check_bus_name (priv->client_info, sender)) {
|
|
Packit Service |
b2c451 |
g_dbus_method_invocation_return_error_literal (invocation,
|
|
Packit Service |
b2c451 |
G_DBUS_ERROR,
|
|
Packit Service |
b2c451 |
G_DBUS_ERROR_ACCESS_DENIED,
|
|
Packit Service |
b2c451 |
"Access denied");
|
|
Packit Service |
b2c451 |
return;
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (gclue_service_location_parent_class);
|
|
Packit Service |
b2c451 |
skeleton_vtable = skeleton_class->get_vtable (G_DBUS_INTERFACE_SKELETON (user_data));
|
|
Packit Service |
b2c451 |
skeleton_vtable->method_call (connection,
|
|
Packit Service |
b2c451 |
sender,
|
|
Packit Service |
b2c451 |
object_path,
|
|
Packit Service |
b2c451 |
interface_name,
|
|
Packit Service |
b2c451 |
method_name,
|
|
Packit Service |
b2c451 |
parameters,
|
|
Packit Service |
b2c451 |
invocation,
|
|
Packit Service |
b2c451 |
user_data);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static GVariant *
|
|
Packit Service |
b2c451 |
gclue_service_location_handle_get_property (GDBusConnection *connection,
|
|
Packit Service |
b2c451 |
const gchar *sender,
|
|
Packit Service |
b2c451 |
const gchar *object_path,
|
|
Packit Service |
b2c451 |
const gchar *interface_name,
|
|
Packit Service |
b2c451 |
const gchar *property_name,
|
|
Packit Service |
b2c451 |
GError **error,
|
|
Packit Service |
b2c451 |
gpointer user_data)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueServiceLocationPrivate *priv = GCLUE_SERVICE_LOCATION (user_data)->priv;
|
|
Packit Service |
b2c451 |
GDBusInterfaceSkeletonClass *skeleton_class;
|
|
Packit Service |
b2c451 |
GDBusInterfaceVTable *skeleton_vtable;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
if (!gclue_client_info_check_bus_name (priv->client_info, sender)) {
|
|
Packit Service |
b2c451 |
g_set_error (error,
|
|
Packit Service |
b2c451 |
G_DBUS_ERROR,
|
|
Packit Service |
b2c451 |
G_DBUS_ERROR_ACCESS_DENIED,
|
|
Packit Service |
b2c451 |
"Access denied");
|
|
Packit Service |
b2c451 |
return NULL;
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (gclue_service_location_parent_class);
|
|
Packit Service |
b2c451 |
skeleton_vtable = skeleton_class->get_vtable (G_DBUS_INTERFACE_SKELETON (user_data));
|
|
Packit Service |
b2c451 |
return skeleton_vtable->get_property (connection,
|
|
Packit Service |
b2c451 |
sender,
|
|
Packit Service |
b2c451 |
object_path,
|
|
Packit Service |
b2c451 |
interface_name,
|
|
Packit Service |
b2c451 |
property_name,
|
|
Packit Service |
b2c451 |
error,
|
|
Packit Service |
b2c451 |
user_data);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static gboolean
|
|
Packit Service |
b2c451 |
gclue_service_location_handle_set_property (GDBusConnection *connection,
|
|
Packit Service |
b2c451 |
const gchar *sender,
|
|
Packit Service |
b2c451 |
const gchar *object_path,
|
|
Packit Service |
b2c451 |
const gchar *interface_name,
|
|
Packit Service |
b2c451 |
const gchar *property_name,
|
|
Packit Service |
b2c451 |
GVariant *variant,
|
|
Packit Service |
b2c451 |
GError **error,
|
|
Packit Service |
b2c451 |
gpointer user_data)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GClueServiceLocationPrivate *priv = GCLUE_SERVICE_LOCATION (user_data)->priv;
|
|
Packit Service |
b2c451 |
GDBusInterfaceSkeletonClass *skeleton_class;
|
|
Packit Service |
b2c451 |
GDBusInterfaceVTable *skeleton_vtable;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
if (!gclue_client_info_check_bus_name (priv->client_info, sender)) {
|
|
Packit Service |
b2c451 |
g_set_error (error,
|
|
Packit Service |
b2c451 |
G_DBUS_ERROR,
|
|
Packit Service |
b2c451 |
G_DBUS_ERROR_ACCESS_DENIED,
|
|
Packit Service |
b2c451 |
"Access denied");
|
|
Packit Service |
b2c451 |
return FALSE;
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (gclue_service_location_parent_class);
|
|
Packit Service |
b2c451 |
skeleton_vtable = skeleton_class->get_vtable (G_DBUS_INTERFACE_SKELETON (user_data));
|
|
Packit Service |
b2c451 |
return skeleton_vtable->set_property (connection,
|
|
Packit Service |
b2c451 |
sender,
|
|
Packit Service |
b2c451 |
object_path,
|
|
Packit Service |
b2c451 |
interface_name,
|
|
Packit Service |
b2c451 |
property_name,
|
|
Packit Service |
b2c451 |
variant,
|
|
Packit Service |
b2c451 |
error,
|
|
Packit Service |
b2c451 |
user_data);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static const GDBusInterfaceVTable gclue_service_location_vtable =
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
gclue_service_location_handle_method_call,
|
|
Packit Service |
b2c451 |
gclue_service_location_handle_get_property,
|
|
Packit Service |
b2c451 |
gclue_service_location_handle_set_property,
|
|
Packit Service |
b2c451 |
{NULL}
|
|
Packit Service |
b2c451 |
};
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static GDBusInterfaceVTable *
|
|
Packit Service |
b2c451 |
gclue_service_location_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
return (GDBusInterfaceVTable *) &gclue_service_location_vtable;
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static void
|
|
Packit Service |
b2c451 |
gclue_service_location_class_init (GClueServiceLocationClass *klass)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
GObjectClass *object_class;
|
|
Packit Service |
b2c451 |
GDBusInterfaceSkeletonClass *skeleton_class;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
object_class = G_OBJECT_CLASS (klass);
|
|
Packit Service |
b2c451 |
object_class->finalize = gclue_service_location_finalize;
|
|
Packit Service |
b2c451 |
object_class->get_property = gclue_service_location_get_property;
|
|
Packit Service |
b2c451 |
object_class->set_property = gclue_service_location_set_property;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
|
|
Packit Service |
b2c451 |
skeleton_class->get_vtable = gclue_service_location_get_vtable;
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
gParamSpecs[PROP_CLIENT_INFO] = g_param_spec_object ("client-info",
|
|
Packit Service |
b2c451 |
"ClientInfo",
|
|
Packit Service |
b2c451 |
"Information on client",
|
|
Packit Service |
b2c451 |
GCLUE_TYPE_CLIENT_INFO,
|
|
Packit Service |
b2c451 |
G_PARAM_READWRITE |
|
|
Packit Service |
b2c451 |
G_PARAM_CONSTRUCT_ONLY);
|
|
Packit Service |
b2c451 |
g_object_class_install_property (object_class,
|
|
Packit Service |
b2c451 |
PROP_CLIENT_INFO,
|
|
Packit Service |
b2c451 |
gParamSpecs[PROP_CLIENT_INFO]);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
gParamSpecs[PROP_PATH] = g_param_spec_string ("path",
|
|
Packit Service |
b2c451 |
"Path",
|
|
Packit Service |
b2c451 |
"Path",
|
|
Packit Service |
b2c451 |
NULL,
|
|
Packit Service |
b2c451 |
G_PARAM_READWRITE |
|
|
Packit Service |
b2c451 |
G_PARAM_CONSTRUCT_ONLY);
|
|
Packit Service |
b2c451 |
g_object_class_install_property (object_class,
|
|
Packit Service |
b2c451 |
PROP_PATH,
|
|
Packit Service |
b2c451 |
gParamSpecs[PROP_PATH]);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
gParamSpecs[PROP_CONNECTION] = g_param_spec_object ("connection",
|
|
Packit Service |
b2c451 |
"Connection",
|
|
Packit Service |
b2c451 |
"DBus Connection",
|
|
Packit Service |
b2c451 |
G_TYPE_DBUS_CONNECTION,
|
|
Packit Service |
b2c451 |
G_PARAM_READWRITE |
|
|
Packit Service |
b2c451 |
G_PARAM_CONSTRUCT_ONLY);
|
|
Packit Service |
b2c451 |
g_object_class_install_property (object_class,
|
|
Packit Service |
b2c451 |
PROP_CONNECTION,
|
|
Packit Service |
b2c451 |
gParamSpecs[PROP_CONNECTION]);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
gParamSpecs[PROP_LOCATION] = g_param_spec_object ("location",
|
|
Packit Service |
b2c451 |
"Location",
|
|
Packit Service |
b2c451 |
"Location",
|
|
Packit Service |
b2c451 |
GCLUE_TYPE_LOCATION,
|
|
Packit Service |
b2c451 |
G_PARAM_READWRITE);
|
|
Packit Service |
b2c451 |
g_object_class_install_property (object_class,
|
|
Packit Service |
b2c451 |
PROP_LOCATION,
|
|
Packit Service |
b2c451 |
gParamSpecs[PROP_LOCATION]);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static void
|
|
Packit Service |
b2c451 |
gclue_service_location_init (GClueServiceLocation *location)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
location->priv = G_TYPE_INSTANCE_GET_PRIVATE (location,
|
|
Packit Service |
b2c451 |
GCLUE_TYPE_SERVICE_LOCATION,
|
|
Packit Service |
b2c451 |
GClueServiceLocationPrivate);
|
|
Packit Service |
b2c451 |
gclue_dbus_location_set_altitude (GCLUE_DBUS_LOCATION (location),
|
|
Packit Service |
b2c451 |
GCLUE_LOCATION_ALTITUDE_UNKNOWN);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static gboolean
|
|
Packit Service |
b2c451 |
gclue_service_location_initable_init (GInitable *initable,
|
|
Packit Service |
b2c451 |
GCancellable *cancellable,
|
|
Packit Service |
b2c451 |
GError **error)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
return g_dbus_interface_skeleton_export
|
|
Packit Service |
b2c451 |
(G_DBUS_INTERFACE_SKELETON (initable),
|
|
Packit Service |
b2c451 |
GCLUE_SERVICE_LOCATION (initable)->priv->connection,
|
|
Packit Service |
b2c451 |
GCLUE_SERVICE_LOCATION (initable)->priv->path,
|
|
Packit Service |
b2c451 |
error);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
static void
|
|
Packit Service |
b2c451 |
gclue_service_location_initable_iface_init (GInitableIface *iface)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
iface->init = gclue_service_location_initable_init;
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
GClueServiceLocation *
|
|
Packit Service |
b2c451 |
gclue_service_location_new (GClueClientInfo *info,
|
|
Packit Service |
b2c451 |
const char *path,
|
|
Packit Service |
b2c451 |
GDBusConnection *connection,
|
|
Packit Service |
b2c451 |
GClueLocation *location,
|
|
Packit Service |
b2c451 |
GError **error)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
return g_initable_new (GCLUE_TYPE_SERVICE_LOCATION,
|
|
Packit Service |
b2c451 |
NULL,
|
|
Packit Service |
b2c451 |
error,
|
|
Packit Service |
b2c451 |
"client-info", info,
|
|
Packit Service |
b2c451 |
"path", path,
|
|
Packit Service |
b2c451 |
"connection", connection,
|
|
Packit Service |
b2c451 |
"location", location,
|
|
Packit Service |
b2c451 |
NULL);
|
|
Packit Service |
b2c451 |
}
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
const gchar *
|
|
Packit Service |
b2c451 |
gclue_service_location_get_path (GClueServiceLocation *location)
|
|
Packit Service |
b2c451 |
{
|
|
Packit Service |
b2c451 |
g_return_val_if_fail (GCLUE_IS_SERVICE_LOCATION(location), NULL);
|
|
Packit Service |
b2c451 |
|
|
Packit Service |
b2c451 |
return location->priv->path;
|
|
Packit Service |
b2c451 |
}
|