summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2014-05-26 15:57:48 +0200
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2014-05-27 14:40:37 +0200
commit25ebee46749ec01231ae6417ce6d76eb9726b9ee (patch)
tree0f823568b1043cc8dc34bb6e5648b06fdf1aece3
parentdb6d23db0fda5fe91f30e1bb99b6120b423a98a3 (diff)
downloadtelepathy-glib-25ebee46749ec01231ae6417ce6d76eb9726b9ee.tar.gz
pass a TpMutableContactList to vfunc functions
https://bugs.freedesktop.org/show_bug.cgi?id=77772
-rw-r--r--docs/reference/telepathy-glib/telepathy-glib-sections.txt10
-rw-r--r--examples/cm/contactlist/contact-list.c34
-rw-r--r--telepathy-glib/base-contact-list.c139
-rw-r--r--telepathy-glib/base-contact-list.h47
-rw-r--r--tests/lib/contact-list-manager.c10
5 files changed, 173 insertions, 67 deletions
diff --git a/docs/reference/telepathy-glib/telepathy-glib-sections.txt b/docs/reference/telepathy-glib/telepathy-glib-sections.txt
index ea4c0c500..bcf85d126 100644
--- a/docs/reference/telepathy-glib/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib/telepathy-glib-sections.txt
@@ -4913,12 +4913,17 @@ tp_base_contact_list_fill_contact_attributes
TP_TYPE_MUTABLE_CONTACT_LIST
TpMutableContactListInterface
TpMutableContactList
+TpMutableContactGroupListAsyncFinishFunc
+TpMutableContactListAsyncFinishFunc
+TpMutableContactListBooleanFunc
+tp_mutable_contact_list_true_func
+tp_mutable_contact_list_false_func
tp_base_contact_list_can_change_contact_list
tp_base_contact_list_get_request_uses_message
-TpBaseContactListRequestSubscriptionFunc
+TpMutableContactListRequestSubscriptionFunc
tp_base_contact_list_request_subscription_async
tp_base_contact_list_request_subscription_finish
-TpBaseContactListActOnContactsFunc
+TpMutableContactListActOnContactsFunc
tp_base_contact_list_authorize_publication_async
tp_base_contact_list_authorize_publication_finish
tp_base_contact_list_store_contacts_async
@@ -4934,7 +4939,6 @@ TP_TYPE_CONTACT_GROUP_LIST
TpContactGroupList
TpContactGroupListInterface
TpContactGroupListBooleanFunc
-TpMutableContactGroupListAsyncFinishFunc
tp_contact_group_list_false_func
TpContactGroupListNormalizeFunc
tp_contact_group_list_normalize_group
diff --git a/examples/cm/contactlist/contact-list.c b/examples/cm/contactlist/contact-list.c
index c59d7233f..877174dbe 100644
--- a/examples/cm/contactlist/contact-list.c
+++ b/examples/cm/contactlist/contact-list.c
@@ -1116,7 +1116,7 @@ example_contact_list_dup_states (TpBaseContactList *contact_list,
static void
example_contact_list_request_subscription_async (
- TpBaseContactList *contact_list,
+ TpMutableContactList *contact_list,
TpHandleSet *contacts,
const gchar *message,
GAsyncReadyCallback callback,
@@ -1174,7 +1174,8 @@ example_contact_list_request_subscription_async (
g_free (message_lc);
}
- tp_base_contact_list_contacts_changed (contact_list, changed, NULL);
+ tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (contact_list),
+ changed, NULL);
tp_simple_async_report_success_in_idle ((GObject *) self, callback,
user_data, example_contact_list_request_subscription_async);
@@ -1182,7 +1183,7 @@ example_contact_list_request_subscription_async (
static void
example_contact_list_authorize_publication_async (
- TpBaseContactList *contact_list,
+ TpMutableContactList *contact_list,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -1221,7 +1222,8 @@ example_contact_list_authorize_publication_async (
}
}
- tp_base_contact_list_contacts_changed (contact_list, changed, NULL);
+ tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (contact_list),
+ changed, NULL);
tp_simple_async_report_success_in_idle ((GObject *) self, callback,
user_data, example_contact_list_authorize_publication_async);
@@ -1229,7 +1231,7 @@ example_contact_list_authorize_publication_async (
static void
example_contact_list_store_contacts_async (
- TpBaseContactList *contact_list,
+ TpMutableContactList *contact_list,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -1260,14 +1262,15 @@ example_contact_list_store_contacts_async (
}
}
- tp_base_contact_list_contacts_changed (contact_list, changed, NULL);
+ tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (contact_list),
+ changed, NULL);
tp_simple_async_report_success_in_idle ((GObject *) self, callback,
user_data, example_contact_list_store_contacts_async);
}
static void
-example_contact_list_remove_contacts_async (TpBaseContactList *contact_list,
+example_contact_list_remove_contacts_async (TpMutableContactList *contact_list,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -1307,14 +1310,15 @@ example_contact_list_remove_contacts_async (TpBaseContactList *contact_list,
}
}
- tp_base_contact_list_contacts_changed (contact_list, NULL, removed);
+ tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (contact_list),
+ NULL, removed);
tp_simple_async_report_success_in_idle ((GObject *) self, callback,
user_data, example_contact_list_remove_contacts_async);
}
static void
-example_contact_list_unsubscribe_async (TpBaseContactList *contact_list,
+example_contact_list_unsubscribe_async (TpMutableContactList *contact_list,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -1371,14 +1375,15 @@ example_contact_list_unsubscribe_async (TpBaseContactList *contact_list,
}
}
- tp_base_contact_list_contacts_changed (contact_list, changed, NULL);
+ tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (contact_list),
+ changed, NULL);
tp_simple_async_report_success_in_idle ((GObject *) self, callback,
user_data, example_contact_list_unsubscribe_async);
}
static void
-example_contact_list_unpublish_async (TpBaseContactList *contact_list,
+example_contact_list_unpublish_async (TpMutableContactList *contact_list,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -1449,7 +1454,8 @@ example_contact_list_unpublish_async (TpBaseContactList *contact_list,
}
}
- tp_base_contact_list_contacts_changed (contact_list, changed, removed);
+ tp_base_contact_list_contacts_changed (TP_BASE_CONTACT_LIST (contact_list),
+ changed, removed);
tp_simple_async_report_success_in_idle ((GObject *) self, callback,
user_data, example_contact_list_unpublish_async);
@@ -1706,8 +1712,8 @@ example_contact_list_class_init (ExampleContactListClass *klass)
static void
mutable_contact_list_iface_init (TpMutableContactListInterface *iface)
{
- iface->can_change_contact_list = tp_base_contact_list_true_func;
- iface->get_request_uses_message = tp_base_contact_list_true_func;
+ iface->can_change_contact_list = tp_mutable_contact_list_true_func;
+ iface->get_request_uses_message = tp_mutable_contact_list_true_func;
iface->request_subscription_async =
example_contact_list_request_subscription_async;
iface->authorize_publication_async =
diff --git a/telepathy-glib/base-contact-list.c b/telepathy-glib/base-contact-list.c
index 75fc9320a..f710e8c4c 100644
--- a/telepathy-glib/base-contact-list.c
+++ b/telepathy-glib/base-contact-list.c
@@ -195,7 +195,7 @@
*/
/**
- * TpBaseContactListActOnContactsFunc:
+ * TpMutableContactListActOnContactsFunc:
* @self: the contact list manager implementing
* #TP_TYPE_BLOCKABLE_CONTACT_LIST
* @contacts: the contacts on which to act
@@ -229,7 +229,7 @@
*/
/**
- * TpBaseContactListRequestSubscriptionFunc:
+ * TpMutableContactListRequestSubscriptionFunc:
* @self: the contact list manager
* @contacts: the contacts whose subscription is to be requested
* @message: an optional human-readable message from the user
@@ -259,6 +259,20 @@
*/
/**
+ * TpMutableContactListAsyncFinishFunc:
+ * @self: the contact list manager implementing
+ * #TP_TYPE_MUTABLE_CONTACT_LIST
+ * @result: the result of the asynchronous operation
+ * @error: used to raise an error if %FALSE is returned
+ *
+ * Signature of a virtual method to finish an async operation.
+ *
+ * Returns: %TRUE on success, or %FALSE if @error is set
+ *
+ * Since: UNRELEASED
+ */
+
+/**
* TpBlockableContactListAsyncFinishFunc:
* @self: the contact list manager implementing
* #TP_TYPE_BLOCKABLE_CONTACT_LIST
@@ -888,18 +902,31 @@ tp_base_contact_list_download_async_default (TpBaseContactList *self,
"This CM does not implement Download");
}
+static gboolean
+tp_mutable_contact_list_simple_finish (TpMutableContactList *self,
+ GAsyncResult *result,
+ GError **error)
+{
+ GSimpleAsyncResult *simple = (GSimpleAsyncResult *) result;
+
+ g_return_val_if_fail (g_simple_async_result_is_valid (
+ result, G_OBJECT (self), NULL), FALSE);
+
+ return !g_simple_async_result_propagate_error (simple, error);
+}
+
static void
tp_mutable_contact_list_default_init (TpMutableContactListInterface *iface)
{
- iface->request_subscription_finish = tp_base_contact_list_simple_finish;
- iface->authorize_publication_finish = tp_base_contact_list_simple_finish;
- iface->unsubscribe_finish = tp_base_contact_list_simple_finish;
- iface->unpublish_finish = tp_base_contact_list_simple_finish;
- iface->store_contacts_finish = tp_base_contact_list_simple_finish;
- iface->remove_contacts_finish = tp_base_contact_list_simple_finish;
+ iface->request_subscription_finish = tp_mutable_contact_list_simple_finish;
+ iface->authorize_publication_finish = tp_mutable_contact_list_simple_finish;
+ iface->unsubscribe_finish = tp_mutable_contact_list_simple_finish;
+ iface->unpublish_finish = tp_mutable_contact_list_simple_finish;
+ iface->store_contacts_finish = tp_mutable_contact_list_simple_finish;
+ iface->remove_contacts_finish = tp_mutable_contact_list_simple_finish;
- iface->can_change_contact_list = tp_base_contact_list_true_func;
- iface->get_request_uses_message = tp_base_contact_list_true_func;
+ iface->can_change_contact_list = tp_mutable_contact_list_true_func;
+ iface->get_request_uses_message = tp_mutable_contact_list_true_func;
/* there's no default for the other virtual methods */
}
@@ -1538,8 +1565,8 @@ tp_base_contact_list_request_subscription_async (TpBaseContactList *self,
g_return_if_fail (mutable_iface != NULL);
g_return_if_fail (mutable_iface->request_subscription_async != NULL);
- mutable_iface->request_subscription_async (self, contacts, message, callback,
- user_data);
+ mutable_iface->request_subscription_async (TP_MUTABLE_CONTACT_LIST (self),
+ contacts, message, callback, user_data);
}
/**
@@ -1576,7 +1603,8 @@ tp_base_contact_list_request_subscription_finish (TpBaseContactList *self,
g_return_val_if_fail (mutable_iface->request_subscription_finish != NULL,
FALSE);
- return mutable_iface->request_subscription_finish (self, result, error);
+ return mutable_iface->request_subscription_finish (
+ TP_MUTABLE_CONTACT_LIST (self), result, error);
}
/**
@@ -1654,8 +1682,8 @@ tp_base_contact_list_authorize_publication_async (TpBaseContactList *self,
g_return_if_fail (mutable_iface != NULL);
g_return_if_fail (mutable_iface->authorize_publication_async != NULL);
- mutable_iface->authorize_publication_async (self, contacts, callback,
- user_data);
+ mutable_iface->authorize_publication_async (
+ TP_MUTABLE_CONTACT_LIST (self), contacts, callback, user_data);
}
/**
@@ -1692,7 +1720,8 @@ tp_base_contact_list_authorize_publication_finish (TpBaseContactList *self,
g_return_val_if_fail (mutable_iface->authorize_publication_finish != NULL,
FALSE);
- return mutable_iface->authorize_publication_finish (self, result, error);
+ return mutable_iface->authorize_publication_finish (
+ TP_MUTABLE_CONTACT_LIST (self), result, error);
}
/**
@@ -1736,8 +1765,8 @@ tp_base_contact_list_store_contacts_async (TpBaseContactList *self,
tp_simple_async_report_success_in_idle ((GObject *) self,
callback, user_data, NULL);
else
- mutable_iface->store_contacts_async (self, contacts, callback,
- user_data);
+ mutable_iface->store_contacts_async (
+ TP_MUTABLE_CONTACT_LIST (self), contacts, callback, user_data);
}
/**
@@ -1773,7 +1802,8 @@ tp_base_contact_list_store_contacts_finish (TpBaseContactList *self,
g_return_val_if_fail (mutable_iface != NULL, FALSE);
g_return_val_if_fail (mutable_iface->store_contacts_finish != NULL, FALSE);
- return mutable_iface->store_contacts_finish (self, result, error);
+ return mutable_iface->store_contacts_finish (TP_MUTABLE_CONTACT_LIST (self),
+ result, error);
}
/**
@@ -1811,7 +1841,8 @@ tp_base_contact_list_remove_contacts_async (TpBaseContactList *self,
g_return_if_fail (mutable_iface != NULL);
g_return_if_fail (mutable_iface->remove_contacts_async != NULL);
- mutable_iface->remove_contacts_async (self, contacts, callback, user_data);
+ mutable_iface->remove_contacts_async (TP_MUTABLE_CONTACT_LIST (self),
+ contacts, callback, user_data);
}
/**
@@ -1847,7 +1878,8 @@ tp_base_contact_list_remove_contacts_finish (TpBaseContactList *self,
g_return_val_if_fail (mutable_iface != NULL, FALSE);
g_return_val_if_fail (mutable_iface->remove_contacts_finish != NULL, FALSE);
- return mutable_iface->remove_contacts_finish (self, result, error);
+ return mutable_iface->remove_contacts_finish (TP_MUTABLE_CONTACT_LIST (self),
+ result, error);
}
/**
@@ -1883,7 +1915,8 @@ tp_base_contact_list_unsubscribe_async (TpBaseContactList *self,
g_return_if_fail (mutable_iface != NULL);
g_return_if_fail (mutable_iface->unsubscribe_async != NULL);
- mutable_iface->unsubscribe_async (self, contacts, callback, user_data);
+ mutable_iface->unsubscribe_async (TP_MUTABLE_CONTACT_LIST (self),
+ contacts, callback, user_data);
}
/**
@@ -1919,7 +1952,8 @@ tp_base_contact_list_unsubscribe_finish (TpBaseContactList *self,
g_return_val_if_fail (mutable_iface != NULL, FALSE);
g_return_val_if_fail (mutable_iface->unsubscribe_finish != NULL, FALSE);
- return mutable_iface->unsubscribe_finish (self, result, error);
+ return mutable_iface->unsubscribe_finish (TP_MUTABLE_CONTACT_LIST (self),
+ result, error);
}
/**
@@ -1955,7 +1989,8 @@ tp_base_contact_list_unpublish_async (TpBaseContactList *self,
g_return_if_fail (mutable_iface != NULL);
g_return_if_fail (mutable_iface->unpublish_async != NULL);
- mutable_iface->unpublish_async (self, contacts, callback, user_data);
+ mutable_iface->unpublish_async (
+ TP_MUTABLE_CONTACT_LIST (self), contacts, callback, user_data);
}
/**
@@ -1991,7 +2026,8 @@ tp_base_contact_list_unpublish_finish (TpBaseContactList *self,
g_return_val_if_fail (mutable_iface != NULL, FALSE);
g_return_val_if_fail (mutable_iface->unpublish_finish != NULL, FALSE);
- return mutable_iface->unpublish_finish (self, result, error);
+ return mutable_iface->unpublish_finish (TP_MUTABLE_CONTACT_LIST (self),
+ result, error);
}
/**
@@ -2026,6 +2062,22 @@ tp_base_contact_list_unpublish_finish (TpBaseContactList *self,
* Since: UNRELEASED
*/
+/**
+ * TpMutableContactListBooleanFunc:
+ * @self: a contact list manager implementing
+ * #TP_TYPE_MUTABLE_CONTACT_LIST
+ *
+ * Signature of a virtual method that returns a boolean result. These are used
+ * for feature-discovery.
+ *
+ * For the simple cases of a constant result, use
+ * tp_mutable_contact_list_true_func() or
+ * tp_mutable_contact_list_false_func().
+ *
+ * Returns: a boolean result
+ *
+ * Since: UNRELEASED
+ */
/**
* tp_base_contact_list_true_func:
@@ -2096,6 +2148,39 @@ tp_blockable_contact_list_false_func (
return FALSE;
}
+/**
+ * tp_mutable_contact_list_true_func:
+ * @self: ignored
+ *
+ * An implementation of #TpMutableContactListBooleanFunc that returns %TRUE,
+ * for use in simple cases.
+ *
+ * Returns: %TRUE
+ *
+ * Since: UNRELEASED
+ */
+gboolean
+tp_mutable_contact_list_true_func (TpMutableContactList *self G_GNUC_UNUSED)
+{
+ return TRUE;
+}
+
+/**
+ * tp_mutable_contact_list_false_func:
+ * @self: ignored
+ *
+ * An implementation of #TpMutableContactListBooleanFunc that returns %FALSE,
+ * for use in simple cases.
+ *
+ * Returns: %TRUE
+ *
+ * Since: UNRELEASED
+ */
+gboolean
+tp_mutable_contact_list_false_func (TpMutableContactList *self G_GNUC_UNUSED)
+{
+ return TRUE;
+}
/**
* tp_base_contact_list_can_change_contact_list:
@@ -2140,7 +2225,7 @@ tp_base_contact_list_can_change_contact_list (TpBaseContactList *self)
g_return_val_if_fail (iface != NULL, FALSE);
g_return_val_if_fail (iface->can_change_contact_list != NULL, FALSE);
- return iface->can_change_contact_list (self);
+ return iface->can_change_contact_list (TP_MUTABLE_CONTACT_LIST (self));
}
/**
@@ -2291,7 +2376,7 @@ tp_base_contact_list_get_request_uses_message (TpBaseContactList *self)
g_return_val_if_fail (iface != NULL, FALSE);
g_return_val_if_fail (iface->get_request_uses_message != NULL, FALSE);
- return iface->get_request_uses_message (self);
+ return iface->get_request_uses_message (TP_MUTABLE_CONTACT_LIST (self));
}
/**
diff --git a/telepathy-glib/base-contact-list.h b/telepathy-glib/base-contact-list.h
index 8818f0fc1..8981975fc 100644
--- a/telepathy-glib/base-contact-list.h
+++ b/telepathy-glib/base-contact-list.h
@@ -173,47 +173,58 @@ struct _TpBaseContactListClass {
typedef struct _TpMutableContactListInterface TpMutableContactListInterface;
typedef struct _TpMutableContactList TpMutableContactList;
-typedef void (*TpBaseContactListRequestSubscriptionFunc) (
- TpBaseContactList *self,
+typedef void (*TpMutableContactListRequestSubscriptionFunc) (
+ TpMutableContactList *self,
TpHandleSet *contacts,
const gchar *message,
GAsyncReadyCallback callback,
gpointer user_data);
-typedef void (*TpBaseContactListActOnContactsFunc) (
- TpBaseContactList *self,
+typedef void (*TpMutableContactListActOnContactsFunc) (
+ TpMutableContactList *self,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data);
+typedef gboolean (*TpMutableContactListAsyncFinishFunc) (
+ TpMutableContactList *self,
+ GAsyncResult *result,
+ GError **error);
+
+typedef gboolean (*TpMutableContactListBooleanFunc) (
+ TpMutableContactList *self);
+
+gboolean tp_mutable_contact_list_true_func (TpMutableContactList *self);
+gboolean tp_mutable_contact_list_false_func (TpMutableContactList *self);
+
struct _TpMutableContactListInterface {
GTypeInterface parent;
/* _async mandatory-to-implement, _finish has a default implementation
* suitable for a GSimpleAsyncResult */
- TpBaseContactListRequestSubscriptionFunc request_subscription_async;
- TpBaseContactListAsyncFinishFunc request_subscription_finish;
+ TpMutableContactListRequestSubscriptionFunc request_subscription_async;
+ TpMutableContactListAsyncFinishFunc request_subscription_finish;
- TpBaseContactListActOnContactsFunc authorize_publication_async;
- TpBaseContactListAsyncFinishFunc authorize_publication_finish;
+ TpMutableContactListActOnContactsFunc authorize_publication_async;
+ TpMutableContactListAsyncFinishFunc authorize_publication_finish;
- TpBaseContactListActOnContactsFunc remove_contacts_async;
- TpBaseContactListAsyncFinishFunc remove_contacts_finish;
+ TpMutableContactListActOnContactsFunc remove_contacts_async;
+ TpMutableContactListAsyncFinishFunc remove_contacts_finish;
- TpBaseContactListActOnContactsFunc unsubscribe_async;
- TpBaseContactListAsyncFinishFunc unsubscribe_finish;
+ TpMutableContactListActOnContactsFunc unsubscribe_async;
+ TpMutableContactListAsyncFinishFunc unsubscribe_finish;
- TpBaseContactListActOnContactsFunc unpublish_async;
- TpBaseContactListAsyncFinishFunc unpublish_finish;
+ TpMutableContactListActOnContactsFunc unpublish_async;
+ TpMutableContactListAsyncFinishFunc unpublish_finish;
/* optional-to-implement */
- TpBaseContactListActOnContactsFunc store_contacts_async;
- TpBaseContactListAsyncFinishFunc store_contacts_finish;
+ TpMutableContactListActOnContactsFunc store_contacts_async;
+ TpMutableContactListAsyncFinishFunc store_contacts_finish;
- TpBaseContactListBooleanFunc can_change_contact_list;
- TpBaseContactListBooleanFunc get_request_uses_message;
+ TpMutableContactListBooleanFunc can_change_contact_list;
+ TpMutableContactListBooleanFunc get_request_uses_message;
};
GType tp_mutable_contact_list_get_type (void) G_GNUC_CONST;
diff --git a/tests/lib/contact-list-manager.c b/tests/lib/contact-list-manager.c
index 88f1709bd..941221364 100644
--- a/tests/lib/contact-list-manager.c
+++ b/tests/lib/contact-list-manager.c
@@ -422,7 +422,7 @@ contact_list_remove_group_async (TpMutableContactGroupList *base,
}
static void
-contact_list_request_subscription_async (TpBaseContactList *self,
+contact_list_request_subscription_async (TpMutableContactList *self,
TpHandleSet *contacts,
const gchar *message,
GAsyncReadyCallback callback,
@@ -446,7 +446,7 @@ contact_list_request_subscription_async (TpBaseContactList *self,
}
static void
-contact_list_authorize_publication_async (TpBaseContactList *self,
+contact_list_authorize_publication_async (TpMutableContactList *self,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -467,7 +467,7 @@ contact_list_authorize_publication_async (TpBaseContactList *self,
}
static void
-contact_list_remove_contacts_async (TpBaseContactList *self,
+contact_list_remove_contacts_async (TpMutableContactList *self,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -488,7 +488,7 @@ contact_list_remove_contacts_async (TpBaseContactList *self,
}
static void
-contact_list_unsubscribe_async (TpBaseContactList *self,
+contact_list_unsubscribe_async (TpMutableContactList *self,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -508,7 +508,7 @@ contact_list_unsubscribe_async (TpBaseContactList *self,
}
static void
-contact_list_unpublish_async (TpBaseContactList *self,
+contact_list_unpublish_async (TpMutableContactList *self,
TpHandleSet *contacts,
GAsyncReadyCallback callback,
gpointer user_data)