summaryrefslogtreecommitdiff
path: root/dbus/dbus-connection.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-02-08 12:51:33 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2011-06-24 16:01:46 +0100
commitfce1f6b55fc0f9716dc2e049acc10697fb9b6f84 (patch)
treeb80117c1e733e70476e2d62f4e103ff5514f2f75 /dbus/dbus-connection.c
parent8a3e7581e70b9937db392aa24f6885d3bcc00fe8 (diff)
downloaddbus-fce1f6b55fc0f9716dc2e049acc10697fb9b6f84.tar.gz
DBusConnection, DBusTransport: add queue statistics
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34040
Diffstat (limited to 'dbus/dbus-connection.c')
-rw-r--r--dbus/dbus-connection.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c
index 9ec85c06..62792dba 100644
--- a/dbus/dbus-connection.c
+++ b/dbus/dbus-connection.c
@@ -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.