libmm-glib,manager: cleanup object implementation
This commit is contained in:
@@ -17,7 +17,8 @@
|
|||||||
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
* Boston, MA 02110-1301 USA.
|
* Boston, MA 02110-1301 USA.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2011 Google, Inc.
|
* Copyright (C) 2011 - 2012 Aleksander Morgado <aleksander@gnu.org>
|
||||||
|
* Copyright (C) 2011 - 2012 Google, Inc.
|
||||||
*
|
*
|
||||||
* Author: Aleksander Morgado <aleksander@lanedo.com>
|
* Author: Aleksander Morgado <aleksander@lanedo.com>
|
||||||
*/
|
*/
|
||||||
@@ -26,6 +27,18 @@
|
|||||||
#include <mm-gdbus-manager.h>
|
#include <mm-gdbus-manager.h>
|
||||||
#include "mm-manager.h"
|
#include "mm-manager.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION: mm-manager
|
||||||
|
* @title: MMManager
|
||||||
|
* @short_description: The Manager object
|
||||||
|
*
|
||||||
|
* The #MMManager is the object allowing access to the Manager interface.
|
||||||
|
*
|
||||||
|
* This object is also a #GDBusObjectManagerClient, and therefore it allows to
|
||||||
|
* use the standard ObjectManager interface to list and handle the managed
|
||||||
|
* modem objects.
|
||||||
|
*/
|
||||||
|
|
||||||
static void initable_iface_init (GInitableIface *iface);
|
static void initable_iface_init (GInitableIface *iface);
|
||||||
static void async_initable_iface_init (GAsyncInitableIface *iface);
|
static void async_initable_iface_init (GAsyncInitableIface *iface);
|
||||||
|
|
||||||
@@ -34,7 +47,7 @@ static GAsyncInitableIface *async_initable_parent_iface;
|
|||||||
|
|
||||||
G_DEFINE_TYPE_EXTENDED (MMManager, mm_manager, MM_GDBUS_TYPE_OBJECT_MANAGER_CLIENT, 0,
|
G_DEFINE_TYPE_EXTENDED (MMManager, mm_manager, MM_GDBUS_TYPE_OBJECT_MANAGER_CLIENT, 0,
|
||||||
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)
|
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)
|
||||||
G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init));
|
G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init))
|
||||||
|
|
||||||
struct _MMManagerPrivate {
|
struct _MMManagerPrivate {
|
||||||
/* The proxy for the Manager interface */
|
/* The proxy for the Manager interface */
|
||||||
@@ -78,6 +91,22 @@ get_proxy_type (GDBusObjectManagerClient *manager,
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mm_manager_new_finish:
|
||||||
|
* @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_new().
|
||||||
|
* @error: Return location for error or %NULL
|
||||||
|
*
|
||||||
|
* Finishes an operation started with mm_manager_new().
|
||||||
|
*
|
||||||
|
* Returns: (transfer full) (type MMManager): The constructed object manager client or %NULL if @error is set.
|
||||||
|
*/
|
||||||
|
MMManager *
|
||||||
|
mm_manager_new_finish (GAsyncResult *res,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return MM_MANAGER (mm_gdbus_object_manager_client_new_finish (res, error));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mm_manager_new:
|
* mm_manager_new:
|
||||||
* @connection: A #GDBusConnection.
|
* @connection: A #GDBusConnection.
|
||||||
@@ -116,22 +145,6 @@ mm_manager_new (GDBusConnection *connection,
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* mm_manager_new_finish:
|
|
||||||
* @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_new().
|
|
||||||
* @error: Return location for error or %NULL
|
|
||||||
*
|
|
||||||
* Finishes an operation started with mm_manager_new().
|
|
||||||
*
|
|
||||||
* Returns: (transfer full) (type MMManager): The constructed object manager client or %NULL if @error is set.
|
|
||||||
*/
|
|
||||||
MMManager *
|
|
||||||
mm_manager_new_finish (GAsyncResult *res,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
return MM_MANAGER (mm_gdbus_object_manager_client_new_finish (res, error));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mm_manager_new_sync:
|
* mm_manager_new_sync:
|
||||||
* @connection: A #GDBusConnection.
|
* @connection: A #GDBusConnection.
|
||||||
@@ -168,13 +181,15 @@ mm_manager_new_sync (GDBusConnection *connection,
|
|||||||
return (ret ? MM_MANAGER (ret) : NULL);
|
return (ret ? MM_MANAGER (ret) : NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mm_manager_peek_proxy:
|
* mm_manager_peek_proxy:
|
||||||
* @manager: A #MMManager.
|
* @manager: A #MMManager.
|
||||||
*
|
*
|
||||||
* Gets the #GDBusProxy interface of the %manager.
|
* Gets the #GDBusProxy interface of the @manager.
|
||||||
*
|
*
|
||||||
* Returns: (transfer none): The #GDBusProxy interface of %manager. Do not free the returned object, it is owned by @manager.
|
* Returns: (transfer none): The #GDBusProxy interface of @manager. Do not free the returned object, it is owned by @manager.
|
||||||
*/
|
*/
|
||||||
GDBusProxy *
|
GDBusProxy *
|
||||||
mm_manager_peek_proxy (MMManager *manager)
|
mm_manager_peek_proxy (MMManager *manager)
|
||||||
@@ -186,9 +201,9 @@ mm_manager_peek_proxy (MMManager *manager)
|
|||||||
* mm_manager_get_proxy:
|
* mm_manager_get_proxy:
|
||||||
* @manager: A #MMManager.
|
* @manager: A #MMManager.
|
||||||
*
|
*
|
||||||
* Gets the #GDBusProxy interface of the %manager.
|
* Gets the #GDBusProxy interface of the @manager.
|
||||||
*
|
*
|
||||||
* Returns: (transfer full): The #GDBusProxy interface of %manager, which must be freed with g_object_unref().
|
* Returns: (transfer full): The #GDBusProxy interface of @manager, which must be freed with g_object_unref().
|
||||||
*/
|
*/
|
||||||
GDBusProxy *
|
GDBusProxy *
|
||||||
mm_manager_get_proxy (MMManager *manager)
|
mm_manager_get_proxy (MMManager *manager)
|
||||||
@@ -196,6 +211,26 @@ mm_manager_get_proxy (MMManager *manager)
|
|||||||
return G_DBUS_PROXY (g_object_ref (manager->priv->manager_iface_proxy));
|
return G_DBUS_PROXY (g_object_ref (manager->priv->manager_iface_proxy));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mm_manager_set_logging_finish:
|
||||||
|
* @manager: A #MMManager.
|
||||||
|
* @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_set_logging().
|
||||||
|
* @error: Return location for error or %NULL.
|
||||||
|
*
|
||||||
|
* Finishes an operation started with mm_manager_set_logging().
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if the call succeded, %FALSE if @error is set.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
mm_manager_set_logging_finish (MMManager *manager,
|
||||||
|
GAsyncResult *res,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_logging_ready (MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy,
|
set_logging_ready (MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy,
|
||||||
GAsyncResult *res,
|
GAsyncResult *res,
|
||||||
@@ -215,6 +250,23 @@ set_logging_ready (MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy,
|
|||||||
g_object_unref (simple);
|
g_object_unref (simple);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mm_manager_set_logging:
|
||||||
|
* @manager: A #MMManager.
|
||||||
|
* @level: the login level to set.
|
||||||
|
* @cancellable: (allow-none): A #GCancellable or %NULL.
|
||||||
|
* @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
|
||||||
|
* @user_data: User data to pass to @callback.
|
||||||
|
*
|
||||||
|
* Asynchronously requests to set the specified logging level in the daemon.
|
||||||
|
*
|
||||||
|
* When the operation is finished, @callback will be invoked in the
|
||||||
|
* <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
|
||||||
|
* of the thread you are calling this method from. You can then call
|
||||||
|
* mm_manager_set_logging_finish() to get the result of the operation.
|
||||||
|
*
|
||||||
|
* See mm_manager_set_logging_sync() for the synchronous, blocking version of this method.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
mm_manager_set_logging (MMManager *manager,
|
mm_manager_set_logging (MMManager *manager,
|
||||||
const gchar *level,
|
const gchar *level,
|
||||||
@@ -237,18 +289,21 @@ mm_manager_set_logging (MMManager *manager,
|
|||||||
result);
|
result);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
/**
|
||||||
mm_manager_set_logging_finish (MMManager *manager,
|
* mm_manager_set_logging_sync:
|
||||||
GAsyncResult *res,
|
* @manager: A #MMManager.
|
||||||
GError **error)
|
* @level: the login level to set.
|
||||||
{
|
* @cancellable: (allow-none): A #GCancellable or %NULL.
|
||||||
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res),
|
* @error: Return location for error or %NULL.
|
||||||
error))
|
*
|
||||||
return FALSE;
|
* Synchronously requests to set the specified logging level in the daemon..
|
||||||
|
*
|
||||||
return TRUE;
|
* The calling thread is blocked until a reply is received.
|
||||||
}
|
*
|
||||||
|
* See mm_manager_set_logging() for the asynchronous version of this method.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if the call succeded, %FALSE if @error is set.
|
||||||
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
mm_manager_set_logging_sync (MMManager *manager,
|
mm_manager_set_logging_sync (MMManager *manager,
|
||||||
const gchar *level,
|
const gchar *level,
|
||||||
@@ -262,6 +317,30 @@ mm_manager_set_logging_sync (MMManager *manager,
|
|||||||
error));
|
error));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mm_manager_scan_devices_finish:
|
||||||
|
* @manager: A #MMManager.
|
||||||
|
* @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_scan_devices().
|
||||||
|
* @error: Return location for error or %NULL.
|
||||||
|
*
|
||||||
|
* Finishes an operation started with mm_manager_scan_devices().
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if the call succeded, %FALSE if @error is set.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
mm_manager_scan_devices_finish (MMManager *manager,
|
||||||
|
GAsyncResult *res,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res),
|
||||||
|
error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
scan_devices_ready (MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy,
|
scan_devices_ready (MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy,
|
||||||
GAsyncResult *res,
|
GAsyncResult *res,
|
||||||
@@ -288,11 +367,10 @@ scan_devices_ready (MmGdbusOrgFreedesktopModemManager1 *manager_iface_proxy,
|
|||||||
* @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
|
* @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
|
||||||
* @user_data: User data to pass to @callback.
|
* @user_data: User data to pass to @callback.
|
||||||
*
|
*
|
||||||
* Requests to scan looking for devices.
|
* Asynchronously requests to scan looking for devices.
|
||||||
*
|
*
|
||||||
* Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-ModemManager1.ScanDevices">ScanDevices()</link>
|
* When the operation is finished, @callback will be invoked in the
|
||||||
* D-Bus method on @manager. When the operation is finished, @callback will be
|
* <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
|
||||||
* invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
|
|
||||||
* of the thread you are calling this method from. You can then call
|
* of the thread you are calling this method from. You can then call
|
||||||
* mm_manager_scan_devices_finish() to get the result of the operation.
|
* mm_manager_scan_devices_finish() to get the result of the operation.
|
||||||
*
|
*
|
||||||
@@ -318,42 +396,19 @@ mm_manager_scan_devices (MMManager *manager,
|
|||||||
result);
|
result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* mm_manager_scan_devices_finish:
|
|
||||||
* @manager: A #MMManager.
|
|
||||||
* @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_scan_devices().
|
|
||||||
* @error: Return location for error or %NULL.
|
|
||||||
*
|
|
||||||
* Finishes an operation started with mm_manager_scan_devices().
|
|
||||||
*
|
|
||||||
* Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
mm_manager_scan_devices_finish (MMManager *manager,
|
|
||||||
GAsyncResult *res,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res),
|
|
||||||
error))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mm_manager_scan_devices_sync:
|
* mm_manager_scan_devices_sync:
|
||||||
* @manager: A #MMManager.
|
* @manager: A #MMManager.
|
||||||
* @cancellable: (allow-none): A #GCancellable or %NULL.
|
* @cancellable: (allow-none): A #GCancellable or %NULL.
|
||||||
* @error: Return location for error or %NULL.
|
* @error: Return location for error or %NULL.
|
||||||
*
|
*
|
||||||
* Requests to scan looking for devices.
|
* Synchronously requests to scan looking for devices.
|
||||||
*
|
*
|
||||||
* Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-ModemManager1.ScanDevices">ScanDevices()</link>
|
* The calling thread is blocked until a reply is received.
|
||||||
* D-Bus method on @manager. The calling thread is blocked until a reply is received.
|
|
||||||
*
|
*
|
||||||
* See mm_gdbus_org_freedesktop_modem_manager1_call_scan_devices() for the asynchronous version of this method.
|
* See mm_manager_scan_devices() for the asynchronous version of this method.
|
||||||
*
|
*
|
||||||
* Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
|
* Returns: %TRUE if the call succeded, %FALSE if @error is set.
|
||||||
*/
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
mm_manager_scan_devices_sync (MMManager *manager,
|
mm_manager_scan_devices_sync (MMManager *manager,
|
||||||
@@ -366,6 +421,8 @@ mm_manager_scan_devices_sync (MMManager *manager,
|
|||||||
error));
|
error));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
initable_init_sync (GInitable *initable,
|
initable_init_sync (GInitable *initable,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
@@ -411,6 +468,8 @@ initable_init_sync (GInitable *initable,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GSimpleAsyncResult *result;
|
GSimpleAsyncResult *result;
|
||||||
int io_priority;
|
int io_priority;
|
||||||
@@ -529,6 +588,8 @@ initable_init_async (GAsyncInitable *initable,
|
|||||||
ctx);
|
ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mm_manager_init (MMManager *manager)
|
mm_manager_init (MMManager *manager)
|
||||||
{
|
{
|
||||||
@@ -539,14 +600,13 @@ mm_manager_init (MMManager *manager)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
finalize (GObject *object)
|
dispose (GObject *object)
|
||||||
{
|
{
|
||||||
MMManagerPrivate *priv = MM_MANAGER (object)->priv;
|
MMManager *self = MM_MANAGER (object);
|
||||||
|
|
||||||
if (priv->manager_iface_proxy)
|
g_clear_object (&self->priv->manager_iface_proxy);
|
||||||
g_object_unref (priv->manager_iface_proxy);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (mm_manager_parent_class)->finalize (object);
|
G_OBJECT_CLASS (mm_manager_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -572,5 +632,5 @@ mm_manager_class_init (MMManagerClass *manager_class)
|
|||||||
g_type_class_add_private (object_class, sizeof (MMManagerPrivate));
|
g_type_class_add_private (object_class, sizeof (MMManagerPrivate));
|
||||||
|
|
||||||
/* Virtual methods */
|
/* Virtual methods */
|
||||||
object_class->finalize = finalize;
|
object_class->dispose = dispose;
|
||||||
}
|
}
|
||||||
|
@@ -17,7 +17,8 @@
|
|||||||
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
* Boston, MA 02110-1301 USA.
|
* Boston, MA 02110-1301 USA.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2011 Google, Inc.
|
* Copyright (C) 2011 - 2012 Aleksander Morgado <aleksander@gnu.org>
|
||||||
|
* Copyright (C) 2011 - 2012 Google, Inc.
|
||||||
*
|
*
|
||||||
* Author: Aleksander Morgado <aleksander@lanedo.com>
|
* Author: Aleksander Morgado <aleksander@lanedo.com>
|
||||||
*/
|
*/
|
||||||
@@ -37,18 +38,26 @@ G_BEGIN_DECLS
|
|||||||
#define MM_IS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), MM_TYPE_MANAGER))
|
#define MM_IS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), MM_TYPE_MANAGER))
|
||||||
#define MM_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_MANAGER, MMManagerClass))
|
#define MM_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_MANAGER, MMManagerClass))
|
||||||
|
|
||||||
|
typedef struct _MMManager MMManager;
|
||||||
|
typedef struct _MMManagerClass MMManagerClass;
|
||||||
typedef struct _MMManagerPrivate MMManagerPrivate;
|
typedef struct _MMManagerPrivate MMManagerPrivate;
|
||||||
|
|
||||||
typedef struct {
|
/**
|
||||||
|
* MMManager:
|
||||||
|
*
|
||||||
|
* The #MMManager structure contains private data and should only be accessed
|
||||||
|
* using the provided API.
|
||||||
|
*/
|
||||||
|
struct _MMManager {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
MmGdbusObjectManagerClient parent;
|
MmGdbusObjectManagerClient parent;
|
||||||
MMManagerPrivate *priv;
|
MMManagerPrivate *priv;
|
||||||
} MMManager;
|
};
|
||||||
|
|
||||||
typedef struct {
|
struct _MMManagerClass {
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
MmGdbusObjectManagerClientClass parent;
|
MmGdbusObjectManagerClientClass parent;
|
||||||
} MMManagerClass;
|
};
|
||||||
|
|
||||||
GType mm_manager_get_type (void);
|
GType mm_manager_get_type (void);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user