]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
DBusConnection, DBusTransport: add queue statistics
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 8 Feb 2011 12:51:33 +0000 (12:51 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 24 Jun 2011 15:01:46 +0000 (16:01 +0100)
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34040

dbus/dbus-connection-internal.h
dbus/dbus-connection.c
dbus/dbus-transport.c
dbus/dbus-transport.h

index cdf3f59d58786400dbb39cb178f9c3df09bf16ba..60d514581dcd886855cc3acf577c2c7766face22 100644 (file)
@@ -103,6 +103,15 @@ void              _dbus_connection_test_get_locks                 (DBusConnectio
                                                                    DBusCondVar **dispatch_cond_loc,
                                                                    DBusCondVar **io_path_cond_loc);
 
+/* if DBUS_ENABLE_STATS */
+void _dbus_connection_get_stats (DBusConnection *connection,
+                                 dbus_uint32_t  *in_messages,
+                                 dbus_uint32_t  *in_bytes,
+                                 dbus_uint32_t  *in_fds,
+                                 dbus_uint32_t  *out_messages,
+                                 dbus_uint32_t  *out_bytes,
+                                 dbus_uint32_t  *out_fds);
+
 /* This _dbus_bus_* stuff doesn't really belong here, but dbus-bus-internal.h seems
  * silly for one function
  */
index 9ec85c06ea9ad3ed9e58b36be1b6df633b3bca2f..62792dbae5ced604c45491d0dae757ed9e68f61b 100644 (file)
@@ -6157,6 +6157,36 @@ dbus_connection_get_outgoing_size (DBusConnection *connection)
   return res;
 }
 
+#ifdef DBUS_ENABLE_STATS
+void
+_dbus_connection_get_stats (DBusConnection *connection,
+                            dbus_uint32_t  *in_messages,
+                            dbus_uint32_t  *in_bytes,
+                            dbus_uint32_t  *in_fds,
+                            dbus_uint32_t  *out_messages,
+                            dbus_uint32_t  *out_bytes,
+                            dbus_uint32_t  *out_fds)
+{
+  CONNECTION_LOCK (connection);
+
+  if (in_messages != NULL)
+    *in_messages = connection->n_incoming;
+
+  _dbus_transport_get_stats (connection->transport, in_bytes, in_fds);
+
+  if (out_messages != NULL)
+    *out_messages = connection->n_outgoing;
+
+  if (out_bytes != NULL)
+    *out_bytes = _dbus_counter_get_size_value (connection->outgoing_counter);
+
+  if (out_fds != NULL)
+    *out_fds = _dbus_counter_get_unix_fd_value (connection->outgoing_counter);
+
+  CONNECTION_UNLOCK (connection);
+}
+#endif /* DBUS_ENABLE_STATS */
+
 /**
  * Gets the approximate number of uni fds of all messages in the
  * outgoing message queue.
index ba6bd4b4beeec43b0cdb7ab9437043b6f32983f7..8ab643bf167cc822fbb42196066d258a58e9b2c5 100644 (file)
@@ -1482,4 +1482,18 @@ _dbus_transport_set_allow_anonymous (DBusTransport              *transport,
   transport->allow_anonymous = value != FALSE;
 }
 
+#ifdef DBUS_ENABLE_STATS
+void
+_dbus_transport_get_stats (DBusTransport  *transport,
+                           dbus_uint32_t  *queue_bytes,
+                           dbus_uint32_t  *queue_fds)
+{
+  if (queue_bytes != NULL)
+    *queue_bytes = _dbus_counter_get_size_value (transport->live_messages);
+
+  if (queue_fds != NULL)
+    *queue_fds = _dbus_counter_get_unix_fd_value (transport->live_messages);
+}
+#endif /* DBUS_ENABLE_STATS */
+
 /** @} */
index 0db048a21704b19205c0729c93cab14546b1bcfb..0aeab183a63ff523a6b752fdffc53e172f34da8a 100644 (file)
@@ -97,6 +97,10 @@ dbus_bool_t        _dbus_transport_set_auth_mechanisms    (DBusTransport
 void               _dbus_transport_set_allow_anonymous    (DBusTransport              *transport,
                                                            dbus_bool_t                 value);
 
+/* if DBUS_ENABLE_STATS */
+void _dbus_transport_get_stats (DBusTransport  *transport,
+                                dbus_uint32_t  *queue_bytes,
+                                dbus_uint32_t  *queue_fds);
 
 DBUS_END_DECLS