Beispiel #1
0
static void
mtn_connman_g_signal (GDBusProxy   *proxy,
                      const gchar  *sender_name,
                      const gchar  *signal_name,
                      GVariant     *parameters)
{
    MtnConnman *connman = MTN_CONNMAN (proxy);

    if (!connman->priv->properties)
        return;

    if (g_strcmp0 (signal_name, "PropertyChanged") == 0) {
        char *key;
        GVariant *value;

        g_variant_get (parameters, "(sv)", &key, &value);
        mtn_connman_handle_new_property (connman, key, value);
    }
    else if (g_strcmp0 (signal_name, "ServicesChanged") == 0) {
        if (connman->priv->services)
          g_variant_unref (connman->priv->services);

        /* get the first child from the (a(oa{sv})ao) tupple */
        connman->priv->services = g_variant_get_child_value (parameters, 0);

        g_signal_emit (connman, signals[SERVICES_CHANGED_SIGNAL], 0,
                       parameters);
    }
}
Beispiel #2
0
static void
_get_services_cb (GObject      *obj,
                  GAsyncResult *res,
                  gpointer      user_data)
{
    MtnConnman *connman;
    GError *error;
    GVariant *var;
    InitData *data;

    connman = MTN_CONNMAN (obj);
    data = (InitData*)user_data;

    error = NULL;
    var = g_dbus_proxy_call_finish (G_DBUS_PROXY (obj), res, &error);
    if (!var) {
        g_warning ("Initial GetServices() failed: %s\n",
                   error->message);
        g_error_free (error);
    } else {
      connman->priv->services = var;
    }

    if (data->done_props) {
        g_simple_async_result_complete_in_idle (data->res);
        g_object_unref (data->res);
        g_free (data);
    } else {
      data->done_services = TRUE;
    }
}
Beispiel #3
0
static gboolean
mtn_connman_initable_init_sync (GInitable     *initable,
                                GCancellable  *cancellable,
                                GError       **error)
{
    GInitableIface *iface_class, *parent_iface_class;
    GVariant *var, *value;
    GVariantIter *iter;
    char *key;
    MtnConnman *connman;

    connman = MTN_CONNMAN (initable);

    /* Chain up the old method */
    iface_class = G_INITABLE_GET_IFACE (initable);
    parent_iface_class = g_type_interface_peek_parent (iface_class);
    if (!parent_iface_class->init (initable, cancellable, error)) {
        return FALSE;
    }

    g_signal_connect (connman, "notify::g-name-owner",
                      G_CALLBACK (_name_owner_notify_cb), NULL);

    var = g_dbus_proxy_call_sync (G_DBUS_PROXY (connman),
                                  "GetProperties",
                                  NULL,
                                  G_DBUS_CALL_FLAGS_NONE,
                                  -1,
                                  NULL,
                                  error);
    if (!var) {
        return FALSE;
    }

    g_variant_get (var, "(a{sv})", &iter);
    while (g_variant_iter_next (iter, "{sv}", &key, &value)) {
        g_hash_table_insert (connman->priv->properties,
                             key, value);
    }
    g_variant_iter_free (iter);
    g_variant_unref (var);

    var = g_dbus_proxy_call_sync (G_DBUS_PROXY (connman),
                                  "GetServices",
                                  NULL,
                                  G_DBUS_CALL_FLAGS_NONE,
                                  -1,
                                  NULL,
                                  error);
    if (!var) {
        return FALSE;
    }

    connman->priv->services = var;

    return TRUE;
}
Beispiel #4
0
static void
mtn_connman_dispose (GObject *object)
{
    MtnConnman *connman;

    connman = MTN_CONNMAN (object);

    if (connman->priv->properties) {
        g_hash_table_unref (connman->priv->properties);
        connman->priv->properties = NULL;
    }

    if (connman->priv->services)
      g_variant_unref (connman->priv->services);

    G_OBJECT_CLASS (mtn_connman_parent_class)->dispose (object);
}
static void
mtn_service_model_set_property (GObject *object, guint property_id,
                                const GValue *value, GParamSpec *pspec)
{
    MtnServiceModel *model;

    model = MTN_SERVICE_MODEL (object);

    switch (property_id) {
    case PROP_CONNMAN:
        mtn_service_model_set_connman (model,
                                       MTN_CONNMAN (g_value_get_object (value)));
        break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
    }
}
Beispiel #6
0
static void
_get_properties_cb (GObject      *obj,
                    GAsyncResult *res,
                    gpointer      user_data)
{
    MtnConnman *connman;
    GError *error;
    GVariant *var;
    InitData *data;

    connman = MTN_CONNMAN (obj);
    data = (InitData*)user_data;

    error = NULL;
    var = g_dbus_proxy_call_finish (G_DBUS_PROXY (obj), res, &error);
    if (!var) {
        g_warning ("Initial Service.GetProperties() failed: %s\n",
                   error->message);
        g_error_free (error);
    } else {
        GVariant *value;
        char *key;
        GVariantIter *iter;

        g_variant_get (var, "(a{sv})", &iter);
        while (g_variant_iter_next (iter, "{sv}", &key, &value)) {
            g_hash_table_insert (connman->priv->properties,
                                 key, value);
        }
        g_variant_iter_free (iter);
        g_variant_unref (var);
    }

    if (data->done_services) {
        g_simple_async_result_complete_in_idle (data->res);
        g_object_unref (data->res);
        g_free (data);
    } else {
      data->done_props = TRUE;
    }
}
Beispiel #7
0
MtnConnman *
mtn_connman_new_finish (GAsyncResult  *res,
                        GError       **error)
{
    return MTN_CONNMAN (g_dbus_proxy_new_finish (res, error));
}