[Telepathy-commits] [telepathy-glib/master] callable example: add a configurable simulation delay
Simon McVittie
simon.mcvittie at collabora.co.uk
Tue Mar 17 06:39:34 PDT 2009
---
examples/cm/callable/conn.c | 19 +++++++++++++++++++
examples/cm/callable/connection-manager.c | 7 ++++++-
examples/cm/callable/manager-file.py | 4 ++++
examples/cm/callable/media-channel.c | 18 ++++++++++++++++++
examples/cm/callable/media-manager.c | 20 ++++++++++++++++++++
examples/cm/callable/media-stream.c | 18 ++++++++++++++++++
6 files changed, 85 insertions(+), 1 deletions(-)
diff --git a/examples/cm/callable/conn.c b/examples/cm/callable/conn.c
index e9d6e43..6a5ae71 100644
--- a/examples/cm/callable/conn.c
+++ b/examples/cm/callable/conn.c
@@ -46,12 +46,14 @@ G_DEFINE_TYPE_WITH_CODE (ExampleCallableConnection,
enum
{
PROP_ACCOUNT = 1,
+ PROP_SIMULATION_DELAY,
N_PROPS
};
struct _ExampleCallableConnectionPrivate
{
gchar *account;
+ guint simulation_delay;
gboolean away;
gchar *presence_message;
};
@@ -80,6 +82,10 @@ get_property (GObject *object,
g_value_set_string (value, self->priv->account);
break;
+ case PROP_SIMULATION_DELAY:
+ g_value_set_uint (value, self->priv->simulation_delay);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec);
}
@@ -100,6 +106,10 @@ set_property (GObject *object,
self->priv->account = g_value_dup_string (value);
break;
+ case PROP_SIMULATION_DELAY:
+ self->priv->simulation_delay = g_value_get_uint (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec);
}
@@ -152,11 +162,13 @@ create_handle_repos (TpBaseConnection *conn,
static GPtrArray *
create_channel_managers (TpBaseConnection *conn)
{
+ ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (conn);
GPtrArray *ret = g_ptr_array_sized_new (1);
g_ptr_array_add (ret,
g_object_new (EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER,
"connection", conn,
+ "simulation-delay", self->priv->simulation_delay,
NULL));
return ret;
@@ -373,6 +385,13 @@ example_callable_connection_class_init (
G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec);
+ param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay",
+ "Delay between simulated network events",
+ 0, G_MAXUINT32, 1000,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (object_class, PROP_SIMULATION_DELAY,
+ param_spec);
+
tp_contacts_mixin_class_init (object_class,
G_STRUCT_OFFSET (ExampleCallableConnectionClass, contacts_mixin));
tp_presence_mixin_class_init (object_class,
diff --git a/examples/cm/callable/connection-manager.c b/examples/cm/callable/connection-manager.c
index 768cc1c..fa8e0f0 100644
--- a/examples/cm/callable/connection-manager.c
+++ b/examples/cm/callable/connection-manager.c
@@ -48,6 +48,7 @@ example_callable_connection_manager_init (
typedef struct {
gchar *account;
+ guint simulation_delay;
} ExampleParams;
static gboolean
@@ -71,7 +72,10 @@ account_param_filter (const TpCMParamSpec *paramspec,
static gpointer
alloc_params (void)
{
- return g_slice_new0 (ExampleParams);
+ ExampleParams *params = g_slice_new0 (ExampleParams);
+
+ params->simulation_delay = 1000;
+ return params;
}
static void
@@ -103,6 +107,7 @@ new_connection (TpBaseConnectionManager *self,
conn = EXAMPLE_CALLABLE_CONNECTION
(g_object_new (EXAMPLE_TYPE_CALLABLE_CONNECTION,
"account", params->account,
+ "simulation-delay", params->simulation_delay,
"protocol", proto,
NULL));
diff --git a/examples/cm/callable/manager-file.py b/examples/cm/callable/manager-file.py
index 6811e3d..4fdb7e8 100644
--- a/examples/cm/callable/manager-file.py
+++ b/examples/cm/callable/manager-file.py
@@ -12,6 +12,10 @@ PARAMS = {
# 'struct_field': '...',
# 'setter_data': 'NULL',
},
+ 'simulation-delay': {
+ 'dtype': 'u',
+ 'default': 1000,
+ },
},
}
STRUCTS = {
diff --git a/examples/cm/callable/media-channel.c b/examples/cm/callable/media-channel.c
index 1adf73d..fb1ba5c 100644
--- a/examples/cm/callable/media-channel.c
+++ b/examples/cm/callable/media-channel.c
@@ -74,6 +74,7 @@ enum
PROP_INTERFACES,
PROP_CHANNEL_DESTROYED,
PROP_CHANNEL_PROPERTIES,
+ PROP_SIMULATION_DELAY,
N_PROPS
};
@@ -100,6 +101,8 @@ struct _ExampleCallableMediaChannelPrivate
TpHandle initiator;
ExampleCallableCallProgress progress;
+ guint simulation_delay;
+
guint next_stream_id;
GHashTable *streams;
@@ -294,6 +297,10 @@ get_property (GObject *object,
NULL));
break;
+ case PROP_SIMULATION_DELAY:
+ g_value_set_uint (value, self->priv->simulation_delay);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -341,6 +348,10 @@ set_property (GObject *object,
self->priv->conn = g_value_get_object (value);
break;
+ case PROP_SIMULATION_DELAY:
+ self->priv->simulation_delay = g_value_get_uint (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -572,6 +583,13 @@ example_callable_media_channel_class_init (ExampleCallableMediaChannelClass *kla
G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (object_class, PROP_REQUESTED, param_spec);
+ param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay",
+ "Delay between simulated network events",
+ 0, G_MAXUINT32, 1000,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (object_class, PROP_SIMULATION_DELAY,
+ param_spec);
+
signals[SIGNAL_CALL_TERMINATED] = g_signal_new ("call-terminated",
G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
diff --git a/examples/cm/callable/media-manager.c b/examples/cm/callable/media-manager.c
index 010bfab..7f9372b 100644
--- a/examples/cm/callable/media-manager.c
+++ b/examples/cm/callable/media-manager.c
@@ -46,12 +46,14 @@ G_DEFINE_TYPE_WITH_CODE (ExampleCallableMediaManager,
enum
{
PROP_CONNECTION = 1,
+ PROP_SIMULATION_DELAY,
N_PROPS
};
struct _ExampleCallableMediaManagerPrivate
{
TpBaseConnection *conn;
+ guint simulation_delay;
/* List of ExampleCallableMediaChannel */
GList *channels;
@@ -120,6 +122,11 @@ get_property (GObject *object,
case PROP_CONNECTION:
g_value_set_object (value, self->priv->conn);
break;
+
+ case PROP_SIMULATION_DELAY:
+ g_value_set_uint (value, self->priv->simulation_delay);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -141,6 +148,11 @@ set_property (GObject *object,
* less than its lifetime */
self->priv->conn = g_value_get_object (value);
break;
+
+ case PROP_SIMULATION_DELAY:
+ self->priv->simulation_delay = g_value_get_uint (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -199,6 +211,13 @@ example_callable_media_manager_class_init (
G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (object_class, PROP_CONNECTION, param_spec);
+ param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay",
+ "Delay between simulated network events",
+ 0, G_MAXUINT32, 1000,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (object_class, PROP_SIMULATION_DELAY,
+ param_spec);
+
g_type_class_add_private (klass,
sizeof (ExampleCallableMediaManagerPrivate));
}
@@ -248,6 +267,7 @@ new_channel (ExampleCallableMediaManager *self,
"handle", handle,
"initiator-handle", initiator,
"requested", (self->priv->conn->self_handle == initiator),
+ "simulation-delay", self->priv->simulation_delay,
NULL);
g_free (object_path);
diff --git a/examples/cm/callable/media-stream.c b/examples/cm/callable/media-stream.c
index a2373ec..03ca5a8 100644
--- a/examples/cm/callable/media-stream.c
+++ b/examples/cm/callable/media-stream.c
@@ -44,6 +44,7 @@ enum
PROP_PENDING_SEND,
PROP_DIRECTION,
PROP_STREAM_INFO,
+ PROP_SIMULATION_DELAY,
N_PROPS
};
@@ -67,6 +68,8 @@ struct _ExampleCallableMediaStreamPrivate
TpMediaStreamDirection direction;
TpMediaStreamPendingSend pending_send;
+ guint simulation_delay;
+
gulong call_terminated_id;
guint connected_event_id;
@@ -181,6 +184,10 @@ get_property (GObject *object,
}
break;
+ case PROP_SIMULATION_DELAY:
+ g_value_set_uint (value, self->priv->simulation_delay);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -214,6 +221,10 @@ set_property (GObject *object,
self->priv->channel = g_value_dup_object (value);
break;
+ case PROP_SIMULATION_DELAY:
+ self->priv->simulation_delay = g_value_get_uint (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -321,6 +332,13 @@ example_callable_media_stream_class_init (ExampleCallableMediaStreamClass *klass
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (object_class, PROP_STREAM_INFO, param_spec);
+ param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay",
+ "Delay between simulated network events",
+ 0, G_MAXUINT32, 1000,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (object_class, PROP_SIMULATION_DELAY,
+ param_spec);
+
signals[SIGNAL_REMOVED] = g_signal_new ("removed",
G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
--
1.5.6.5
More information about the telepathy-commits
mailing list