/* * telepathy-example-inspect-cm - inspect a connection manager * * Usage: * * telepathy-example-inspect-cm gabble * Inspect the Gabble connection manager, by reading the installed * .manager file if available, and introspecting the running CM if not * * telepathy-example-inspect-cm gabble data/gabble.manager * As above, but assume the given filename is correct * * telepathy-example-inspect-cm gabble "" * Don't read any .manager file, just introspect the running CM * * Copyright (C) 2007 Collabora Ltd. * Copyright (C) 2007 Nokia Corporation * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include #include static void ready (TpConnectionManager *cm, const GError *error, gpointer user_data, GObject *weak_object G_GNUC_UNUSED) { GMainLoop *mainloop = user_data; if (error != NULL) { g_assert (!tp_connection_manager_is_ready (cm)); g_warning ("Error getting CM info: %s", error->message); } else { gchar **protocols; guint i; g_assert (tp_connection_manager_is_ready (cm)); g_message ("Connection manager name: %s", tp_connection_manager_get_name (cm)); g_message ("Is running: %s", tp_connection_manager_is_running (cm) ? "yes" : "no"); g_message ("Source of information: %s", tp_connection_manager_get_info_source (cm) == TP_CM_INFO_SOURCE_LIVE ? "D-Bus" : ".manager file"); protocols = tp_connection_manager_dup_protocol_names (cm); for (i = 0; protocols != NULL && protocols[i] != NULL; i++) { const TpConnectionManagerProtocol *protocol; gchar **params; guint j; g_message ("Protocol: %s", protocols[i]); protocol = tp_connection_manager_get_protocol (cm, protocols[i]); g_assert (protocol != NULL); g_message ("\tCan register accounts via Telepathy: %s", tp_connection_manager_protocol_can_register (protocol) ? "yes" : "no"); params = tp_connection_manager_protocol_dup_param_names (protocol); for (j = 0; params != NULL && params[j] != NULL; j++) { const TpConnectionManagerParam *param; GValue value = { 0 }; g_message ("\tParameter: %s", params[j]); param = tp_connection_manager_protocol_get_param (protocol, params[j]); g_message ("\t\tD-Bus signature: %s", tp_connection_manager_param_get_dbus_signature (param)); g_message ("\t\tIs required: %s", tp_connection_manager_param_is_required (param) ? "yes" : "no"); if (tp_connection_manager_protocol_can_register (protocol)) { g_message ("\t\tIs required for registration: %s", tp_connection_manager_param_is_required_for_registration ( param) ? "yes" : "no"); } g_message ("\t\tIs secret (password etc.): %s", tp_connection_manager_param_is_secret (param) ? "yes" : "no"); g_message ("\t\tIs a D-Bus property: %s", tp_connection_manager_param_is_dbus_property (param) ? "yes" : "no"); if (tp_connection_manager_param_get_default (param, &value)) { gchar *s = g_strdup_value_contents (&value); g_message ("\t\tDefault value: %s", s); g_free (s); g_value_unset (&value); } else { g_message ("\t\tNo default value"); } } g_strfreev (params); } g_strfreev (protocols); } g_main_loop_quit (mainloop); } int main (int argc, char **argv) { const gchar *cm_name, *manager_file; TpConnectionManager *cm = NULL; GMainLoop *mainloop = NULL; GError *error = NULL; TpDBusDaemon *dbus = NULL; int ret = 1; g_type_init (); tp_debug_set_flags (g_getenv ("EXAMPLE_DEBUG")); if (argc < 2) return 2; dbus = tp_dbus_daemon_dup (&error); if (dbus == NULL) { g_warning ("%s", error->message); g_error_free (error); goto out; } mainloop = g_main_loop_new (NULL, FALSE); cm_name = argv[1]; manager_file = argv[2]; /* possibly NULL */ cm = tp_connection_manager_new (dbus, cm_name, manager_file, &error); if (cm == NULL) { g_warning ("%s", error->message); g_error_free (error); goto out; } tp_connection_manager_call_when_ready (cm, ready, mainloop, NULL, NULL); g_main_loop_run (mainloop); ret = 0; out: if (cm != NULL) g_object_unref (cm); if (mainloop != NULL) g_main_loop_unref (mainloop); if (dbus != NULL) g_object_unref (dbus); return ret; }