summaryrefslogtreecommitdiff
path: root/src/connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/connection.c')
-rw-r--r--src/connection.c78
1 files changed, 56 insertions, 22 deletions
diff --git a/src/connection.c b/src/connection.c
index 46860deb..395c906e 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -591,6 +591,7 @@ get_contact_statuses (GObject *obj,
SalutConnection *self = SALUT_CONNECTION (obj);
SalutConnectionPrivate *priv = self->priv;
TpBaseConnection *base = (TpBaseConnection *) self;
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
TpHandleRepoIface *handle_repo = tp_base_connection_get_handles (base,
TP_HANDLE_TYPE_CONTACT);
GHashTable *ret;
@@ -611,7 +612,7 @@ get_contact_statuses (GObject *obj,
(SALUT_PRESENCE_OFFLINE, NULL);
const gchar *message = NULL;
- if (handle == base->self_handle)
+ if (handle == self_handle)
{
ps->index = priv->self->status;
message = priv->self->status_message;
@@ -656,12 +657,13 @@ set_self_presence (SalutConnection *self,
if (salut_self_set_presence (priv->self, presence, message, error))
{
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
TpPresenceStatus ps = { priv->self->status,
make_presence_opt_args (priv->self->status,
priv->self->status_message) };
tp_presence_mixin_emit_one_presence_update ((GObject *) self,
- base->self_handle, &ps);
+ self_handle, &ps);
if (ps.optional_arguments != NULL)
g_hash_table_unref (ps.optional_arguments);
@@ -729,6 +731,21 @@ static const gchar *interfaces [] = {
#endif
NULL };
+static GPtrArray *
+get_interfaces (TpBaseConnection *base)
+{
+ GPtrArray *arr;
+ const gchar **iter;
+
+ arr = TP_BASE_CONNECTION_CLASS (
+ salut_connection_parent_class)->get_interfaces_always_present (base);
+
+ for (iter = interfaces; *iter != NULL; iter++)
+ g_ptr_array_add (arr, (gchar *) *iter);
+
+ return arr;
+}
+
const gchar * const *
salut_connection_get_implemented_interfaces (void)
{
@@ -774,7 +791,7 @@ salut_connection_class_init (SalutConnectionClass *salut_connection_class)
salut_connection_shut_down;
tp_connection_class->start_connecting =
salut_connection_start_connecting;
- tp_connection_class->interfaces_always_present = interfaces;
+ tp_connection_class->get_interfaces_always_present = get_interfaces;
salut_connection_class->properties_mixin.interfaces = prop_interfaces;
tp_dbus_properties_mixin_class_init (object_class,
@@ -1093,7 +1110,8 @@ _self_established_cb (SalutSelf *s, gpointer data)
g_free (self->name);
self->name = g_strdup (s->name);
- base->self_handle = tp_handle_ensure (handle_repo, self->name, NULL, NULL);
+ tp_base_connection_set_self_handle (base,
+ tp_handle_ensure (handle_repo, self->name, NULL, NULL));
wocky_session_set_jid (self->session, self->name);
@@ -1301,7 +1319,7 @@ salut_connection_get_alias (SalutConnection *self, TpHandle handle)
TP_HANDLE_TYPE_CONTACT);
const gchar *alias;
- if (handle == base->self_handle)
+ if (handle == tp_base_connection_get_self_handle (base))
{
alias = salut_self_get_alias (priv->self);
}
@@ -1438,7 +1456,7 @@ salut_connection_get_handle_contact_capabilities (SalutConnection *self,
const GabbleCapabilitySet *set;
SalutContact *contact = NULL;
- if (handle == base_conn->self_handle)
+ if (handle == tp_base_connection_get_self_handle (base_conn))
{
if (self->priv->self == NULL)
return;
@@ -1512,10 +1530,11 @@ salut_connection_set_aliases (TpSvcConnectionInterfaceAliasing *iface,
{
SalutConnection *self = SALUT_CONNECTION (iface);
TpBaseConnection *base = (TpBaseConnection *) self;
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
SalutConnectionPrivate *priv = self->priv;
GError *error = NULL;
const gchar *alias = g_hash_table_lookup (aliases,
- GUINT_TO_POINTER (base->self_handle));
+ GUINT_TO_POINTER (self_handle));
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -1617,6 +1636,7 @@ salut_connection_set_avatar (TpSvcConnectionInterfaceAvatars *iface,
SalutConnectionPrivate *priv = self->priv;
GError *error = NULL;
TpBaseConnection *base = (TpBaseConnection *) self;
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -1629,7 +1649,7 @@ salut_connection_set_avatar (TpSvcConnectionInterfaceAvatars *iface,
}
tp_svc_connection_interface_avatars_emit_avatar_updated (self,
- base->self_handle, priv->self->avatar_token);
+ self_handle, priv->self->avatar_token);
tp_svc_connection_interface_avatars_return_from_set_avatar (context,
priv->self->avatar_token);
}
@@ -1645,6 +1665,7 @@ salut_connection_get_avatar_tokens (TpSvcConnectionInterfaceAvatars *iface,
SalutConnection *self = SALUT_CONNECTION (iface);
SalutConnectionPrivate *priv = self->priv;
TpBaseConnection *base = TP_BASE_CONNECTION (self);
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
TpHandleRepoIface *handle_repo;
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -1664,7 +1685,7 @@ salut_connection_get_avatar_tokens (TpSvcConnectionInterfaceAvatars *iface,
for (i = 0; i < contacts->len ; i++)
{
TpHandle handle = g_array_index (contacts, TpHandle, i);
- if (base->self_handle == handle)
+ if (self_handle == handle)
{
ret[i] = priv->self->avatar_token;
}
@@ -1701,6 +1722,7 @@ salut_connection_get_known_avatar_tokens (
SalutConnection *self = SALUT_CONNECTION (iface);
SalutConnectionPrivate *priv = self->priv;
TpBaseConnection *base = TP_BASE_CONNECTION (self);
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
TpHandleRepoIface *handle_repo;
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -1722,7 +1744,7 @@ salut_connection_get_known_avatar_tokens (
TpHandle handle = g_array_index (contacts, TpHandle, i);
gchar *tokens = NULL;
- if (base->self_handle == handle)
+ if (self_handle == handle)
{
tokens = g_strdup (priv->self->avatar_token);
}
@@ -1759,6 +1781,7 @@ salut_connection_avatars_fill_contact_attributes (GObject *obj,
guint i;
SalutConnection *self = SALUT_CONNECTION (obj);
TpBaseConnection *base = TP_BASE_CONNECTION (self);
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
SalutConnectionPrivate *priv = self->priv;
for (i = 0; i < contacts->len; i++)
@@ -1766,7 +1789,7 @@ salut_connection_avatars_fill_contact_attributes (GObject *obj,
TpHandle handle = g_array_index (contacts, TpHandle, i);
gchar *token = NULL;
- if (base->self_handle == handle)
+ if (self_handle == handle)
{
token = g_strdup (priv->self->avatar_token);
}
@@ -1829,6 +1852,7 @@ salut_connection_request_avatars (
SalutConnection *self = SALUT_CONNECTION (iface);
SalutConnectionPrivate *priv = self->priv;
TpBaseConnection *base = TP_BASE_CONNECTION (self);
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
TpHandleRepoIface *handle_repo;
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -1847,7 +1871,7 @@ salut_connection_request_avatars (
{
TpHandle handle = g_array_index (contacts, TpHandle, i);
- if (base->self_handle == handle)
+ if (self_handle == handle)
{
GArray *arr;
@@ -1859,7 +1883,7 @@ salut_connection_request_avatars (
priv->self->avatar_size);
tp_svc_connection_interface_avatars_emit_avatar_retrieved (
- (GObject *) self, base->self_handle,
+ (GObject *) self, self_handle,
priv->self->avatar_token, arr, "");
g_array_unref (arr);
}
@@ -1912,6 +1936,7 @@ salut_connection_request_avatar (TpSvcConnectionInterfaceAvatars *iface,
SalutConnection *self = SALUT_CONNECTION (iface);
SalutConnectionPrivate *priv = self->priv;
TpBaseConnection *base = TP_BASE_CONNECTION (self);
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
SalutContact *contact;
GError *err = NULL;
TpHandleRepoIface *handle_repo;
@@ -1928,7 +1953,7 @@ salut_connection_request_avatar (TpSvcConnectionInterfaceAvatars *iface,
return;
}
- if (handle == base->self_handle)
+ if (handle == self_handle)
{
_request_avatar_cb (NULL, priv->self->avatar, priv->self->avatar_size,
context);
@@ -2239,6 +2264,8 @@ salut_connection_update_capabilities (
if ((before != NULL && !gabble_capability_set_equals (before, after))
|| (before_forms != NULL && !data_forms_equal (before_forms, after_forms)))
{
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
+
if (DEBUGGING)
{
gchar *dump = gabble_capability_set_dump (after, " ");
@@ -2254,7 +2281,7 @@ salut_connection_update_capabilities (
return;
}
- _emit_contact_capabilities_changed (self, base->self_handle);
+ _emit_contact_capabilities_changed (self, self_handle);
}
/* after now belongs to SalutSelf, or priv->pre_connect_caps */
@@ -2459,6 +2486,7 @@ salut_connection_olpc_get_properties (SalutSvcOLPCBuddyInfo *iface,
SalutConnection *self = SALUT_CONNECTION (iface);
SalutConnectionPrivate *priv = self->priv;
TpBaseConnection *base = TP_BASE_CONNECTION (self);
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
GHashTable *properties = NULL;
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -2466,7 +2494,7 @@ salut_connection_olpc_get_properties (SalutSvcOLPCBuddyInfo *iface,
if (!check_contact (base, handle, context))
return;
- if (handle == base->self_handle)
+ if (handle == self_handle)
{
properties = get_properties_hash (priv->self->olpc_key,
priv->self->olpc_color, priv->self->jid, NULL, NULL);
@@ -2677,6 +2705,7 @@ salut_connection_olpc_get_current_activity (SalutSvcOLPCBuddyInfo *iface,
{
SalutConnection *self = SALUT_CONNECTION (iface);
TpBaseConnection *base = (TpBaseConnection *) self;
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
SalutConnectionPrivate *priv = self->priv;
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -2686,7 +2715,7 @@ salut_connection_olpc_get_current_activity (SalutSvcOLPCBuddyInfo *iface,
if (!check_contact (base, handle, context))
return;
- if (handle == base->self_handle)
+ if (handle == self_handle)
{
DEBUG ("Returning my own cur.act.: %s -> %u",
priv->self->olpc_cur_act ? priv->self->olpc_cur_act : "",
@@ -2770,6 +2799,7 @@ salut_connection_olpc_get_activities (SalutSvcOLPCBuddyInfo *iface,
SalutConnection *self = SALUT_CONNECTION (iface);
SalutConnectionPrivate *priv = self->priv;
TpBaseConnection *base = (TpBaseConnection *) self;
+ TpHandle self_handle = tp_base_connection_get_self_handle (base);
GPtrArray *arr;
TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -2779,7 +2809,7 @@ salut_connection_olpc_get_activities (SalutSvcOLPCBuddyInfo *iface,
if (!check_contact (base, handle, context))
return;
- if (handle == base->self_handle)
+ if (handle == self_handle)
{
arr = g_ptr_array_new ();
salut_self_foreach_olpc_activity (priv->self, append_activity, arr);
@@ -3548,6 +3578,7 @@ muc_channel_closed_cb (SalutMucChannel *chan,
SalutConnection *conn;
SalutConnectionPrivate *priv;
TpBaseConnection *base;
+ TpHandle self_handle;
GPtrArray *activities = g_ptr_array_new ();
g_signal_handlers_disconnect_by_func (chan,
@@ -3559,11 +3590,12 @@ muc_channel_closed_cb (SalutMucChannel *chan,
priv = conn->priv;
base = (TpBaseConnection *) conn;
+ self_handle = tp_base_connection_get_self_handle (base);
salut_self_remove_olpc_activity (priv->self, activity);
salut_self_foreach_olpc_activity (priv->self, append_activity, activities);
- salut_svc_olpc_buddy_info_emit_activities_changed (conn, base->self_handle,
+ salut_svc_olpc_buddy_info_emit_activities_changed (conn, self_handle,
activities);
free_olpc_activities (activities);
@@ -3830,7 +3862,8 @@ make_sidecar_path (
TpBaseConnection *base_conn = TP_BASE_CONNECTION (conn);
return g_strdelimit (
- g_strdup_printf ("%s/Sidecar/%s", base_conn->object_path, sidecar_iface),
+ g_strdup_printf ("%s/Sidecar/%s",
+ tp_base_connection_get_object_path (base_conn), sidecar_iface),
".", '/');
}
@@ -3968,7 +4001,7 @@ salut_connection_ensure_sidecar (
gpointer key, value;
GError *error = NULL;
- if (base_conn->status == TP_CONNECTION_STATUS_DISCONNECTED)
+ if (tp_base_connection_is_destroyed (base_conn))
{
GError e = { TP_ERROR, TP_ERROR_DISCONNECTED,
"This connection has already disconnected" };
@@ -4022,7 +4055,8 @@ salut_connection_ensure_sidecar (
g_hash_table_insert (priv->pending_sidecars, g_strdup (sidecar_iface),
g_list_prepend (NULL, context));
- if (base_conn->status == TP_CONNECTION_STATUS_CONNECTED)
+ if (tp_base_connection_get_status (base_conn) ==
+ TP_CONNECTION_STATUS_CONNECTED)
{
SalutPluginLoader *loader = salut_plugin_loader_dup ();