telepathy-glib: debug-message: split the category from the domain

Guillaume Desmottes gdesmott at kemper.freedesktop.org
Wed Apr 18 00:08:57 PDT 2012


Module: telepathy-glib
Branch: master
Commit: 7c4391801a12292165604b630485a9633ba787eb
URL:    http://cgit.freedesktop.org/telepathy/telepathy-glib/commit/?id=7c4391801a12292165604b630485a9633ba787eb

Author: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>
Date:   Mon Apr 16 13:32:46 2012 +0200

debug-message: split the category from the domain

The spec specifies how the category can be included in the domain, UI may want
to display/filter them separately so best to split it for them.

---

 docs/reference/telepathy-glib-sections.txt |    1 +
 telepathy-glib/debug-message.c             |   50 +++++++++++++++++++++++++++-
 telepathy-glib/debug-message.h             |    1 +
 tests/dbus/debug-client.c                  |   17 +++++++++-
 4 files changed, 67 insertions(+), 2 deletions(-)

diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 1cac5ad..0ac3c12 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -7216,6 +7216,7 @@ TpDebugMessageClass
 tp_debug_client_get_messages_async
 tp_debug_client_get_messages_finish
 tp_debug_message_get_domain
+tp_debug_message_get_category
 tp_debug_message_get_level
 tp_debug_message_get_message
 tp_debug_message_get_time
diff --git a/telepathy-glib/debug-message.c b/telepathy-glib/debug-message.c
index 8f7943a..ff947a7 100644
--- a/telepathy-glib/debug-message.c
+++ b/telepathy-glib/debug-message.c
@@ -58,6 +58,7 @@ G_DEFINE_TYPE (TpDebugMessage, tp_debug_message, G_TYPE_OBJECT)
 enum {
   PROP_TIME = 1,
   PROP_DOMAIN,
+  PROP_CATEGORY,
   PROP_LEVEL,
   PROP_MESSAGE,
   LAST_PROPERTY,
@@ -66,6 +67,7 @@ enum {
 struct _TpDebugMessagePriv {
   GDateTime *time;
   gchar *domain;
+  gchar *category;
   GLogLevelFlags level;
   gchar *message;
 };
@@ -89,6 +91,9 @@ tp_debug_message_get_property (GObject *object,
       case PROP_DOMAIN:
         g_value_set_string (value, self->priv->domain);
         break;
+      case PROP_CATEGORY:
+        g_value_set_string (value, self->priv->category);
+        break;
       case PROP_LEVEL:
         g_value_set_uint (value, self->priv->level);
         break;
@@ -106,6 +111,7 @@ tp_debug_message_finalize (GObject *object)
       ((GObjectClass *) tp_debug_message_parent_class)->finalize;
 
   g_free (self->priv->domain);
+  g_free (self->priv->category);
   g_free (self->priv->message);
 
   if (chain_up != NULL)
@@ -149,6 +155,19 @@ tp_debug_message_class_init (
   g_object_class_install_property (oclass, PROP_DOMAIN, spec);
 
   /**
+   * TpDebugMessage:category:
+   *
+   * Category of the debug message, or %NULL if none was specified.
+   *
+   * Since: UNRELEASED
+   */
+  spec = g_param_spec_string ("category", "category",
+      "Category",
+      NULL,
+      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (oclass, PROP_CATEGORY, spec);
+
+  /**
    * TpDebugMessage:level:
    *
    * A #GLogLevelFlags representing the level of the debug message.
@@ -222,8 +241,21 @@ _tp_debug_message_new (gdouble timestamp,
   tv.tv_sec = (glong) timestamp;
   tv.tv_usec = ((timestamp - (int) timestamp) * 1e6);
 
+  if (g_strrstr (domain, "/"))
+    {
+      gchar **parts = g_strsplit (domain, "/", 2);
+      self->priv->domain = g_strdup (parts[0]);
+      self->priv->category = g_strdup (parts[1]);
+      g_strfreev (parts);
+    }
+  else
+    {
+      self->priv->domain = g_strdup (domain);
+      self->priv->category = NULL;
+    }
+
   self->priv->time = g_date_time_new_from_timeval_utc (&tv);
-  self->priv->domain = g_strdup (domain);
+
   self->priv->level = debug_level_to_log_level_flags (level);
   self->priv->message = g_strdup (message);
   g_strchomp (self->priv->message);
@@ -264,6 +296,22 @@ tp_debug_message_get_domain (TpDebugMessage *self)
 }
 
 /**
+ * tp_debug_message_get_category:
+ * @self: a #TpDebugMessage
+ *
+ * Return the #TpDebugMessage:category property
+ *
+ * Returns: the value of #TpDebugMessage:category property
+ *
+ * Since: UNRELEASED
+ */
+const char *
+tp_debug_message_get_category (TpDebugMessage *self)
+{
+  return self->priv->category;
+}
+
+/**
  * tp_debug_message_get_level:
  * @self: a #TpDebugMessage
  *
diff --git a/telepathy-glib/debug-message.h b/telepathy-glib/debug-message.h
index 8d6d0b6..b556002 100644
--- a/telepathy-glib/debug-message.h
+++ b/telepathy-glib/debug-message.h
@@ -67,6 +67,7 @@ GType tp_debug_message_get_type (void);
 
 GDateTime * tp_debug_message_get_time (TpDebugMessage *self);
 const gchar * tp_debug_message_get_domain (TpDebugMessage *self);
+const gchar * tp_debug_message_get_category (TpDebugMessage *self);
 GLogLevelFlags tp_debug_message_get_level (TpDebugMessage *self);
 const gchar * tp_debug_message_get_message (TpDebugMessage *self);
 
diff --git a/tests/dbus/debug-client.c b/tests/dbus/debug-client.c
index 6c73bfd..5ae3219 100644
--- a/tests/dbus/debug-client.c
+++ b/tests/dbus/debug-client.c
@@ -212,7 +212,7 @@ test_get_messages (Test *test,
   time2 = g_date_time_new_now_local ();
   g_date_time_to_timeval (time2, &time_val);
 
-  tp_debug_sender_add_message (test->sender, &time_val, "domain2",
+  tp_debug_sender_add_message (test->sender, &time_val, "domain2/category",
       G_LOG_LEVEL_DEBUG, "message2");
 
   tp_debug_client_get_messages_async (test->client, get_messages_cb, test);
@@ -224,6 +224,7 @@ test_get_messages (Test *test,
   g_assert (test->messages != NULL);
   g_assert_cmpuint (test->messages->len, ==, 2);
 
+  /* first message */
   msg = g_ptr_array_index (test->messages, 0);
   g_assert (TP_IS_DEBUG_MESSAGE (msg));
 
@@ -235,8 +236,22 @@ test_get_messages (Test *test,
   g_assert_cmpuint (g_date_time_to_unix (t), ==, g_date_time_to_unix (time1));
 
   g_assert_cmpstr (tp_debug_message_get_domain (msg), ==, "domain1");
+  g_assert (tp_debug_message_get_category (msg) == NULL);
   g_assert_cmpuint (tp_debug_message_get_level (msg), ==, G_LOG_LEVEL_MESSAGE);
   g_assert_cmpstr (tp_debug_message_get_message (msg), ==, "message1");
+
+  /* second message */
+  msg = g_ptr_array_index (test->messages, 1);
+  g_assert (TP_IS_DEBUG_MESSAGE (msg));
+
+  t = tp_debug_message_get_time (msg);
+  g_assert (t != NULL);
+  g_assert_cmpuint (g_date_time_to_unix (t), ==, g_date_time_to_unix (time2));
+
+  g_assert_cmpstr (tp_debug_message_get_domain (msg), ==, "domain2");
+  g_assert_cmpstr (tp_debug_message_get_category (msg), ==, "category");
+  g_assert_cmpuint (tp_debug_message_get_level (msg), ==, G_LOG_LEVEL_DEBUG);
+  g_assert_cmpstr (tp_debug_message_get_message (msg), ==, "message2");
 }
 
 static void



More information about the telepathy-commits mailing list