diff options
Diffstat (limited to 'qt4/tests/lib/glib/contactlist/connection-manager.c')
-rw-r--r-- | qt4/tests/lib/glib/contactlist/connection-manager.c | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/qt4/tests/lib/glib/contactlist/connection-manager.c b/qt4/tests/lib/glib/contactlist/connection-manager.c new file mode 100644 index 000000000..dda422a0f --- /dev/null +++ b/qt4/tests/lib/glib/contactlist/connection-manager.c @@ -0,0 +1,117 @@ +/* + * manager.c - an example connection manager + * + * Copyright © 2007-2009 Collabora Ltd. <http://www.collabora.co.uk/> + * Copyright © 2007-2009 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 "connection-manager.h" + +#include <dbus/dbus-protocol.h> +#include <dbus/dbus-glib.h> + +#include <telepathy-glib/telepathy-glib.h> + +#include "conn.h" + +G_DEFINE_TYPE (ExampleContactListConnectionManager, + example_contact_list_connection_manager, + TP_TYPE_BASE_CONNECTION_MANAGER) + +struct _ExampleContactListConnectionManagerPrivate +{ + int dummy; +}; + +static void +example_contact_list_connection_manager_init ( + ExampleContactListConnectionManager *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EXAMPLE_TYPE_CONTACT_LIST_CONNECTION_MANAGER, + ExampleContactListConnectionManagerPrivate); +} + +typedef struct { + gchar *account; + guint simulation_delay; +} ExampleParams; + +static gboolean +account_param_filter (const TpCMParamSpec *paramspec, + GValue *value, + GError **error) +{ + const gchar *id = g_value_get_string (value); + + g_value_take_string (value, + example_contact_list_normalize_contact (NULL, id, NULL, error)); + + if (g_value_get_string (value) == NULL) + return FALSE; + + return TRUE; +} + +#include "_gen/param-spec-struct.h" + +static gpointer +alloc_params (void) +{ + return g_slice_new0 (ExampleParams); +} + +static void +free_params (gpointer p) +{ + ExampleParams *params = p; + + g_free (params->account); + + g_slice_free (ExampleParams, params); +} + +static const TpCMProtocolSpec example_protocols[] = { + { "example", example_contact_list_example_params, + alloc_params, free_params }, + { NULL, NULL } +}; + +static TpBaseConnection * +new_connection (TpBaseConnectionManager *self, + const gchar *proto, + TpIntSet *params_present, + gpointer parsed_params, + GError **error) +{ + ExampleParams *params = parsed_params; + ExampleContactListConnection *conn; + + conn = EXAMPLE_CONTACT_LIST_CONNECTION + (g_object_new (EXAMPLE_TYPE_CONTACT_LIST_CONNECTION, + "account", params->account, + "simulation-delay", params->simulation_delay, + "protocol", proto, + NULL)); + + return (TpBaseConnection *) conn; +} + +static void +example_contact_list_connection_manager_class_init ( + ExampleContactListConnectionManagerClass *klass) +{ + TpBaseConnectionManagerClass *base_class = + (TpBaseConnectionManagerClass *) klass; + + g_type_class_add_private (klass, + sizeof (ExampleContactListConnectionManagerPrivate)); + + base_class->new_connection = new_connection; + base_class->cm_dbus_name = "example_contact_list"; + base_class->protocol_params = example_protocols; +} |