[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