/** * tp_yts_client_new: * @service_name: The Ytstenut service name for this client. * @account: The Ytstenut account for this client. * * Create a new #TpYtsClient object for the given Ytstenut name and * account. After getting the new client object, you should add * localized names, capabilities and interests with * tp_yts_client_add_names(), tp_yts_client_add_capabilities() and * tp_yts_client_add_interests() respectively. * After setting these values, You should call * tp_yts_client_register() to register the client. g_object_unref() * should be used to free the object. * * Returns: A newly allocated client object. */ TpYtsClient * tp_yts_client_new (const gchar *service_name, TpAccount *account) { TpYtsClient *out = NULL; TpDBusDaemon *bus; gchar *name, *tmp; g_return_val_if_fail (tp_dbus_check_valid_interface_name (service_name, NULL), NULL); name = g_strdup_printf ("Ytsenut.Client.%s", service_name); bus = tp_dbus_daemon_dup (NULL); out = g_object_new (TP_TYPE_YTS_CLIENT, "dbus-daemon", bus, "name", name, "service-name", service_name, "uniquify-name", TRUE, "account", account, NULL); g_object_unref (bus); g_free (name); /* add uid handler capability token */ tmp = g_strdup_printf (TP_YTS_IFACE_CHANNEL "/uid/%s", service_name); tp_base_client_add_handler_capability (TP_BASE_CLIENT (out), tmp); g_free (tmp); return out; }
/** * tp_yts_client_add_interest: * @client: a #TpYtsClient * @interest: an interest to add * * Adds @interest as an interest to @client. This will be advertised * to other Ytstenut clients when @client is registered and as a * result will mean that StatusChanged will be emitted for this * interest from other services. * * This must be called before tp_yts_client_register() is called. */ void tp_yts_client_add_interest (TpYtsClient *client, const gchar *interest) { gchar *tmp; tmp = g_strdup_printf (TP_YTS_IFACE_CHANNEL "/interested/%s", interest); tp_base_client_add_handler_capability (TP_BASE_CLIENT (client), tmp); g_free (tmp); }
static void shell_tp_client_init (ShellTpClient *self) { GHashTable *filter; self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, SHELL_TYPE_TP_CLIENT, ShellTpClientPrivate); /* We only care about single-user text-based chats */ filter = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, NULL); /* Observer */ tp_base_client_set_observer_recover (TP_BASE_CLIENT (self), TRUE); tp_base_client_add_observer_filter (TP_BASE_CLIENT (self), filter); /* Approver */ tp_base_client_add_approver_filter (TP_BASE_CLIENT (self), filter); /* Approve room invitations. We don't handle or observe room channels so * just register this filter for the approver. */ tp_base_client_take_approver_filter (TP_BASE_CLIENT (self), tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_ROOM, NULL)); /* Handler */ tp_base_client_add_handler_filter (TP_BASE_CLIENT (self), filter); g_hash_table_unref (filter); }
/** * tp_yts_client_add_name: * @client: a #TpYtsClient * @lang: the IETF language tag * @name: the localized name * * Adds @name as a localized name to @client. This will be advertised * to other Ytstenut clients when @client is registered. * * This must be called before tp_yts_client_register() is called. */ void tp_yts_client_add_name (TpYtsClient *client, const gchar *lang, const gchar *name) { gchar *tmp; tmp = g_strdup_printf (TP_YTS_IFACE_CHANNEL "/name/%s/%s", lang, name); tp_base_client_add_handler_capability (TP_BASE_CLIENT (client), tmp); g_free (tmp); }
static void tp_yts_client_constructed (GObject *obj) { TpYtsClient *self = TP_YTS_CLIENT (obj); TpBaseClient *client = TP_BASE_CLIENT (self); /* chain up to TpBaseClient first */ G_OBJECT_CLASS (tp_yts_client_parent_class)->constructed (obj); _tp_yts_register_dbus_glib_marshallers (); tp_base_client_set_handler_bypass_approval (client, FALSE); tp_base_client_take_handler_filter (client, tp_asv_new ( /* ChannelType */ TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_YTS_IFACE_CHANNEL, /* TargetService */ TP_YTS_IFACE_CHANNEL ".TargetService", G_TYPE_STRING, self->priv->service_name, NULL)); }
/** * tp_yts_client_register: * @self: The client object. * @error: If not %NULL, raise an error here when %FALSE is returned. * * Register this client with telepathy. This must be done before new channels * are created or received. * * Returns: %TRUE if registering was successful. */ gboolean tp_yts_client_register (TpYtsClient *self, GError **error) { return tp_base_client_register (TP_BASE_CLIENT (self), error); }