diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-11-30 18:22:22 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:31 +0100 |
commit | 2be2288754e3852f4b437d7aa6f43c43d6464c74 (patch) | |
tree | 08415925f362f015637e56c85a79e0a2dc2275ec /src | |
parent | 6549c23db885f3b3003955f604734af34e2cc87b (diff) |
iface-modem: handle CreateBearer(), DeleteBearer() and ListBearers()
Just pass the task to the specific underlying implementation.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-iface-modem.c | 98 | ||||
-rw-r--r-- | src/mm-iface-modem.h | 27 |
2 files changed, 119 insertions, 6 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index 95460026..73ac51be 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -66,30 +66,116 @@ dbus_call_context_new (MmGdbusModem *skeleton, /*****************************************************************************/ +static void +handle_create_bearer_ready (MMIfaceModem *self, + GAsyncResult *res, + DbusCallContext *ctx) +{ + gchar *path; + GError *error = NULL; + + path = MM_IFACE_MODEM_GET_INTERFACE (self)->create_bearer_finish (self, + res, + &error); + if (error) + g_dbus_method_invocation_take_error (ctx->invocation, + error); + else + mm_gdbus_modem_complete_create_bearer (ctx->skeleton, + ctx->invocation, + path); + g_free (path); + dbus_call_context_free (ctx); +} + static gboolean -handle_create_bearer (MmGdbusModem *object, +handle_create_bearer (MmGdbusModem *skeleton, GDBusMethodInvocation *invocation, GVariant *arg_properties, MMIfaceModem *self) { - return FALSE; /* Currently unhandled */ + MM_IFACE_MODEM_GET_INTERFACE (self)->create_bearer ( + self, + arg_properties, + (GAsyncReadyCallback)handle_create_bearer_ready, + dbus_call_context_new (skeleton, + invocation, + self)); + return TRUE; +} + +/*****************************************************************************/ + +static void +handle_delete_bearer_ready (MMIfaceModem *self, + GAsyncResult *res, + DbusCallContext *ctx) +{ + GError *error = NULL; + + if (!MM_IFACE_MODEM_GET_INTERFACE (self)->delete_bearer_finish (self, + res, + &error)) + g_dbus_method_invocation_take_error (ctx->invocation, + error); + else + mm_gdbus_modem_complete_delete_bearer (ctx->skeleton, + ctx->invocation); + dbus_call_context_free (ctx); } static gboolean -handle_delete_bearer (MmGdbusModem *object, +handle_delete_bearer (MmGdbusModem *skeleton, GDBusMethodInvocation *invocation, const gchar *arg_bearer, MMIfaceModem *self) { - return FALSE; /* Currently unhandled */ + MM_IFACE_MODEM_GET_INTERFACE (self)->delete_bearer ( + self, + arg_bearer, + (GAsyncReadyCallback)handle_delete_bearer_ready, + dbus_call_context_new (skeleton, + invocation, + self)); + return TRUE; +} + +/*****************************************************************************/ + +static void +handle_list_bearers_ready (MMIfaceModem *self, + GAsyncResult *res, + DbusCallContext *ctx) +{ + GStrv path_list; + GError *error = NULL; + + path_list = MM_IFACE_MODEM_GET_INTERFACE (self)->list_bearers_finish (self, + res, + &error); + if (error) + g_dbus_method_invocation_take_error (ctx->invocation, + error); + else + mm_gdbus_modem_complete_list_bearers (ctx->skeleton, + ctx->invocation, + (const gchar *const *)path_list); + g_strfreev (path_list); + dbus_call_context_free (ctx); } static gboolean -handle_list_bearers (MmGdbusModem *object, +handle_list_bearers (MmGdbusModem *skeleton, GDBusMethodInvocation *invocation, MMIfaceModem *self) { - return FALSE; /* Currently unhandled */ + MM_IFACE_MODEM_GET_INTERFACE (self)->list_bearers ( + self, + (GAsyncReadyCallback)handle_list_bearers_ready, + dbus_call_context_new (skeleton, + invocation, + self)); + return TRUE; } /*****************************************************************************/ diff --git a/src/mm-iface-modem.h b/src/mm-iface-modem.h index a59d3c8b..22bb2d3a 100644 --- a/src/mm-iface-modem.h +++ b/src/mm-iface-modem.h @@ -243,6 +243,33 @@ struct _MMIfaceModem { gboolean (*modem_power_down_finish) (MMIfaceModem *self, GAsyncResult *res, GError **error); + + /* Create bearer */ + void (*create_bearer) (MMIfaceModem *self, + GVariant *properties, + GAsyncReadyCallback callback, + gpointer user_data); + gchar * (*create_bearer_finish) (MMIfaceModem *self, + GAsyncResult *res, + GError **error); + + /* List bearers */ + void (*list_bearers) (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data); + GStrv (*list_bearers_finish) (MMIfaceModem *self, + GAsyncResult *res, + GError **error); + + /* Delete bearer */ + void (*delete_bearer) (MMIfaceModem *self, + const gchar *path, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*delete_bearer_finish) (MMIfaceModem *self, + GAsyncResult *res, + GError **error); + }; GType mm_iface_modem_get_type (void); |