[telepathy-mission-control/master] McdService: do not implement any methods
Simon McVittie
simon.mcvittie at collabora.co.uk
Thu Apr 2 12:32:57 PDT 2009
---
src/mcd-service.c | 320 ++++++-----------------------------------------------
1 files changed, 32 insertions(+), 288 deletions(-)
diff --git a/src/mcd-service.c b/src/mcd-service.c
index 3de9149..ede2204 100644
--- a/src/mcd-service.c
+++ b/src/mcd-service.c
@@ -116,74 +116,73 @@ typedef struct _McdServicePrivate
g_assert ((err) != NULL); \
g_warning ("%s: Returning error '%s'", G_STRFUNC, (err)->message);
+/* MC doesn't actually have an equivalent of NotImplemented. Sad face. */
+#define MC_NOT_IMPLEMENTED_SYNC(error) \
+ G_STMT_START { \
+ g_set_error (error, MC_ERROR, MC_NO_ACCOUNTS_ERROR, \
+ "No longer implemented"); \
+ return FALSE; \
+ } G_STMT_END
+#define MC_NOT_IMPLEMENTED_ASYNC(context) \
+ G_STMT_START { \
+ GError e = { MC_ERROR, MC_NO_ACCOUNTS_ERROR, \
+ "No longer implemented" }; \
+ \
+ dbus_g_method_return_error (context, &e); \
+ } G_STMT_END
+
/* Dbus interface implementation */
static gboolean
mcd_service_set_presence (GObject * obj, gint presence, gchar * message,
GError ** error)
{
- if (presence >= LAST_MC_PRESENCE)
- {
- g_set_error (error, MC_ERROR, MC_PRESENCE_FAILURE_ERROR,
- "Invalid presence");
- return FALSE;
- }
-
- mcd_master_request_presence (MCD_MASTER (obj), presence, message);
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static gboolean
mcd_service_get_presence (GObject *obj, gint *ret, GError **error)
{
- *ret = mcd_master_get_requested_presence (MCD_MASTER (obj));
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static gboolean
mcd_service_get_presence_message (GObject *obj, gchar **ret, GError **error)
{
- *ret = mcd_master_get_requested_presence_message (MCD_MASTER (obj));
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static gboolean
mcd_service_get_presence_actual (GObject *obj, gint *ret, GError **error)
{
- *ret = mcd_master_get_actual_presence (MCD_MASTER (obj));
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static gboolean
mcd_service_get_presence_message_actual (GObject *obj, gchar **ret,
GError **error)
{
- *ret = mcd_master_get_actual_presence_message (MCD_MASTER (obj));
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static void
mcd_service_connect_all_with_default_presence (GObject * obj,
DBusGMethodInvocation *mi)
{
- gchar *sender = dbus_g_method_get_sender (mi);
- mcd_master_set_default_presence (MCD_MASTER (obj), sender);
- g_free (sender);
- dbus_g_method_return (mi);
+ MC_NOT_IMPLEMENTED_ASYNC (mi);
}
static gboolean
mcd_service_get_connection_status (GObject * obj, gchar * account_name,
guint * ret, GError ** error)
{
- *ret = mcd_master_get_account_status (MCD_MASTER (obj), account_name);
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static gboolean
mcd_service_get_online_connections (GObject * obj,
gchar *** ret, GError ** error)
{
- return mcd_master_get_online_connection_names (MCD_MASTER (obj), ret);
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static gboolean
@@ -191,11 +190,7 @@ mcd_service_get_connection (GObject * obj, const gchar * account_name,
gchar ** ret_servname,
gchar ** ret_objpath, GError ** error)
{
- return mcd_master_get_account_connection_details (MCD_MASTER (obj),
- account_name,
- ret_servname,
- ret_objpath,
- error);
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static void
@@ -207,24 +202,7 @@ mcd_service_request_channel (GObject * obj,
guint serial,
DBusGMethodInvocation *mi)
{
- struct mcd_channel_request req;
- GError *err = NULL;
-
- memset (&req, 0, sizeof (req));
- req.account_name = account_name;
- req.channel_type = type;
- req.channel_handle = handle;
- req.channel_handle_type = handle_type;
- req.requestor_serial = serial;
- req.requestor_client_id = dbus_g_method_get_sender (mi);
- if (!mcd_master_request_channel (MCD_MASTER (obj), &req, &err))
- {
- g_free ((gchar *)req.requestor_client_id);
- MC_EMIT_ERROR_ASYNC (mi, err);
- return;
- }
- g_free ((gchar *)req.requestor_client_id);
- dbus_g_method_return (mi);
+ MC_NOT_IMPLEMENTED_ASYNC (mi);
}
static void
@@ -236,63 +214,21 @@ mcd_service_request_channel_with_string_handle (GObject * obj,
guint serial,
DBusGMethodInvocation *mi)
{
- struct mcd_channel_request req;
- GError *err = NULL;
-
- memset (&req, 0, sizeof (req));
- req.account_name = account_name;
- req.channel_type = type;
- req.channel_handle_string = handle;
- req.channel_handle_type = handle_type;
- req.requestor_serial = serial;
- req.requestor_client_id = dbus_g_method_get_sender (mi);
- mcd_controller_cancel_shutdown (MCD_CONTROLLER (obj));
- if (!mcd_master_request_channel (MCD_MASTER (obj), &req, &err))
- {
- g_free ((gchar *)req.requestor_client_id);
- MC_EMIT_ERROR_ASYNC (mi, err);
- return;
- }
- g_free ((gchar *)req.requestor_client_id);
- dbus_g_method_return (mi);
+ MC_NOT_IMPLEMENTED_ASYNC (mi);
}
static void
mcd_service_cancel_channel_request (GObject * obj, guint operation_id,
DBusGMethodInvocation *mi)
{
- GError *err = NULL;
- gchar *sender = dbus_g_method_get_sender (mi);
- DEBUG ("%u", operation_id);
- if (!mcd_master_cancel_channel_request (MCD_MASTER (obj), operation_id,
- sender, &err))
- {
- g_warning ("%s: channel not found", G_STRFUNC);
- g_free (sender);
- dbus_g_method_return (mi);
- return;
- }
- g_free (sender);
- if (err)
- {
- MC_EMIT_ERROR_ASYNC (mi, err);
- return;
- }
- dbus_g_method_return (mi);
+ MC_NOT_IMPLEMENTED_ASYNC (mi);
}
static gboolean
mcd_service_get_used_channels_count (GObject * obj, const gchar *chan_type,
guint * ret, GError ** error)
{
- if (!mcd_master_get_used_channels_count (MCD_MASTER (obj),
- g_quark_from_string (chan_type),
- ret, error))
- {
- MC_SHOW_ERROR (*error);
- return FALSE;
- }
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static gboolean
@@ -301,17 +237,7 @@ mcd_service_get_account_for_connection(GObject *obj,
gchar **ret_unique_name,
GError **error)
{
- DEBUG ("%s: object_path = %s", __FUNCTION__, object_path);
-
- if (!mcd_master_get_account_for_connection (MCD_MASTER (obj),
- object_path,
- ret_unique_name,
- error))
- {
- MC_SHOW_ERROR (*error);
- return FALSE;
- }
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static gboolean
@@ -322,51 +248,7 @@ mcd_service_get_current_status(GObject *obj,
GPtrArray **accounts,
GError **error)
{
- McdMaster *as_master = MCD_MASTER (obj);
- McdServicePrivate *priv = MCD_OBJECT_PRIV (obj);
- GList *account_list, *account_node;
- GType type;
-
- *status_out = priv->last_status;
- *presence_out = mcd_master_get_actual_presence (as_master);
- *requested_presence_out = mcd_master_get_requested_presence (as_master);
- *accounts = g_ptr_array_new ();
-
- type = dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_UINT,
- G_TYPE_UINT, G_TYPE_UINT, G_TYPE_INVALID);
- account_list = mcd_presence_frame_get_accounts (priv->presence_frame);
- for (account_node = account_list; account_node != NULL;
- account_node = g_list_next (account_node))
- {
- McdAccount *account = account_node->data;
- GValue account_data = { 0, };
- const gchar *name, *p_status, *p_message;
- TpConnectionStatus status;
- TpConnectionStatusReason reason;
- TpConnectionPresenceType presence;
-
- name = mcd_account_get_unique_name (account);
- mcd_account_get_current_presence (account, &presence,
- &p_status, &p_message);
- status = mcd_presence_frame_get_account_status (priv->presence_frame,
- account);
- reason =
- mcd_presence_frame_get_account_status_reason (priv->presence_frame,
- account);
-
- g_value_init (&account_data, type);
- g_value_take_boxed (&account_data,
- dbus_g_type_specialized_construct (type));
- dbus_g_type_struct_set (&account_data,
- 0, name,
- 1, status,
- 2, presence,
- 3, reason,
- G_MAXUINT);
-
- g_ptr_array_add (*accounts, g_value_get_boxed (&account_data));
- }
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
static void
@@ -376,98 +258,7 @@ mcd_service_remote_avatar_changed(GObject *obj,
const gchar *token,
DBusGMethodInvocation *mi)
{
- McdConnection *connection;
- GError *error = NULL;
-
- DEBUG ("%s: object_path = %s, id = %u, token = %s", __FUNCTION__,
- object_path, contact_id, token);
-
- connection = mcd_master_get_connection (MCD_MASTER (obj),
- object_path, &error);
- if (!connection)
- {
- MC_EMIT_ERROR_ASYNC (mi, error);
- return;
- }
- /* let the D-Bus call return immediately, there's no need for the caller to
- * be blocked while we get the avatar */
- dbus_g_method_return (mi);
-
- mcd_connection_remote_avatar_changed (connection, contact_id, token);
-}
-
-static void
-_on_filter_process (DBusGProxy *proxy, guint counter, gboolean process)
-{
- McdDispatcherContext *ctx;
- GHashTable *ctx_table = g_object_get_data (G_OBJECT (proxy), "table");
-
- ctx = g_hash_table_lookup (ctx_table, GUINT_TO_POINTER (counter));
- if (ctx)
- {
- DEBUG ("%s: Process channel %d", __FUNCTION__, counter);
- g_hash_table_remove (ctx_table, GUINT_TO_POINTER (counter));
- mcd_dispatcher_context_process (ctx, process);
- }
-}
-
-static void
-_on_filter_new_channel (McdDispatcherContext *ctx, DBusGProxy *proxy)
-{
- TpConnection *tp_conn;
- const McdConnection *connection = mcd_dispatcher_context_get_connection (ctx);
- McdChannel *channel = mcd_dispatcher_context_get_channel (ctx);
- static guint counter = 0;
- GHashTable *ctx_table = g_object_get_data (G_OBJECT (proxy), "table");
-
- g_hash_table_insert (ctx_table, GUINT_TO_POINTER (++counter), ctx);
-
- g_object_get (G_OBJECT (connection), "tp-connection", &tp_conn, NULL);
-
- DEBUG ("%s: Filtering new channel", __FUNCTION__);
- dbus_g_proxy_call_no_reply (proxy, "FilterChannel",
- G_TYPE_STRING, TP_PROXY (tp_conn)->bus_name,
- DBUS_TYPE_G_OBJECT_PATH, TP_PROXY (tp_conn)->object_path,
- G_TYPE_STRING, mcd_channel_get_channel_type (channel),
- DBUS_TYPE_G_OBJECT_PATH, mcd_channel_get_object_path (channel),
- G_TYPE_UINT, mcd_channel_get_handle_type (channel),
- G_TYPE_UINT, mcd_channel_get_handle (channel),
- G_TYPE_UINT, counter,
- G_TYPE_INVALID);
-}
-
-static gboolean
-_ctx_table_remove_foreach (guint counter,
- McdDispatcherContext *ctx,
- gpointer user_data)
-{
- mcd_dispatcher_context_process (ctx, TRUE);
- return TRUE;
-}
-
-static void
-_on_filter_proxy_destroy (DBusGProxy *proxy)
-{
- McdDispatcher *dispatcher;
- GHashTable *ctx_table;
- guint quark;
- guint flags;
-
- dispatcher = g_object_get_data (G_OBJECT (proxy), "dispatcher");
- ctx_table = g_object_get_data (G_OBJECT (proxy), "table");
- quark = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (proxy), "quark"));
- flags = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (proxy), "flags"));
-
- g_hash_table_foreach_remove (ctx_table,
- (GHRFunc) _ctx_table_remove_foreach,
- NULL);
-
- DEBUG ("Unregistering filter");
- mcd_dispatcher_unregister_filter (dispatcher,
- (McdFilterFunc) _on_filter_new_channel,
- quark, flags);
-
- g_object_unref (proxy);
+ MC_NOT_IMPLEMENTED_ASYNC (mi);
}
static gboolean
@@ -479,54 +270,7 @@ mcd_service_register_filter(GObject *obj,
guint flags,
GError **error)
{
- McdServicePrivate *priv = MCD_OBJECT_PRIV (obj);
- DBusGProxy *proxy;
- GHashTable *ctx_table;
- static gboolean initialized = FALSE;
- guint quark = g_quark_from_string (channel_type);
-
- DEBUG ("Registering new filter");
-
- if (!initialized)
- {
- dbus_g_object_register_marshaller (_mcd_marshal_VOID__UINT_BOOLEAN,
- G_TYPE_NONE,
- G_TYPE_UINT,
- G_TYPE_BOOLEAN,
- G_TYPE_INVALID);
- initialized = TRUE;
- }
-
- proxy = dbus_g_proxy_new_for_name (tp_get_bus (),
- bus_name,
- object_path,
- "org.freedesktop.Telepathy.MissionControl.Filter");
-
- ctx_table = g_hash_table_new (g_direct_hash, g_direct_equal);
- g_object_set_data_full (G_OBJECT (proxy), "table", ctx_table,
- (GDestroyNotify) g_hash_table_destroy);
- g_object_set_data (G_OBJECT (proxy), "dispatcher", priv->dispatcher);
- g_object_set_data (G_OBJECT (proxy), "flags", GUINT_TO_POINTER (flags));
- g_object_set_data (G_OBJECT (proxy), "quark", GUINT_TO_POINTER (quark));
-
- dbus_g_proxy_add_signal (proxy, "Process",
- G_TYPE_UINT,
- G_TYPE_BOOLEAN,
- G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (proxy, "Process",
- G_CALLBACK (_on_filter_process),
- NULL, NULL);
- g_signal_connect (proxy, "destroy",
- G_CALLBACK (_on_filter_proxy_destroy),
- NULL);
-
- mcd_dispatcher_register_filter (priv->dispatcher,
- (McdFilterFunc) _on_filter_new_channel,
- quark,
- flags, priority,
- proxy);
-
- return TRUE;
+ MC_NOT_IMPLEMENTED_SYNC (error);
}
#include "mcd-service-gen.h"
--
1.5.6.5
More information about the telepathy-commits
mailing list