You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.3 KiB
79 lines
3.3 KiB
// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
|
// Use of this source code is governed by a BSD-style license that can be |
|
// found in the LICENSE file. |
|
|
|
#ifndef DBUS_DBUS_STATISTICS_H_ |
|
#define DBUS_DBUS_STATISTICS_H_ |
|
|
|
#include <string> |
|
|
|
#include "dbus/dbus_export.h" |
|
|
|
// The functions defined here are used to gather DBus statistics, and |
|
// provide them in a format convenient for debugging. These functions are only |
|
// valid when called from the main thread (the thread which Initialize() was |
|
// called from). Calls from other threads will be ignored. |
|
|
|
namespace dbus { |
|
namespace statistics { |
|
|
|
// Enum to specify what level of detail to show in GetAsString |
|
enum ShowInString { |
|
SHOW_SERVICE = 0, // Service totals only |
|
SHOW_INTERFACE = 1, // Service + interface totals |
|
SHOW_METHOD = 2, // Service + interface + method totals |
|
}; |
|
|
|
// Enum to specify how to format the display in GetAsString |
|
enum FormatString { |
|
FORMAT_TOTALS = 0, // Raw totals only |
|
FORMAT_PER_MINUTE = 1, // Per-minute only |
|
FORMAT_ALL = 2 // Include all format details |
|
}; |
|
|
|
// Initializes / shuts down dbus statistics gathering. Calling Initialize |
|
// more than once will reset the statistics. |
|
CHROME_DBUS_EXPORT void Initialize(); |
|
CHROME_DBUS_EXPORT void Shutdown(); |
|
|
|
// Add sent/received calls to the statistics gathering class. These methods |
|
// do nothing unless Initialize() was called. |
|
CHROME_DBUS_EXPORT void AddSentMethodCall(const std::string& service, |
|
const std::string& interface, |
|
const std::string& method); |
|
CHROME_DBUS_EXPORT void AddReceivedSignal(const std::string& service, |
|
const std::string& interface, |
|
const std::string& method); |
|
// Track synchronous calls independently since we want to highlight |
|
// (and remove) these. |
|
CHROME_DBUS_EXPORT void AddBlockingSentMethodCall(const std::string& service, |
|
const std::string& interface, |
|
const std::string& method); |
|
|
|
// Output the calls into a formatted string. |show| determines what level |
|
// of detail to show: one line per service, per interface, or per method. |
|
// If |show_per_minute| is true include per minute stats. |
|
// Example output for SHOW_METHOD, FORMAT_TOTALS: |
|
// org.chromium.Mtpd.EnumerateStorage: Sent: 100 |
|
// org.chromium.Mtpd.MTPStorageSignal: Received: 20 |
|
// Example output for SHOW_INTERFACE, FORMAT_ALL: |
|
// org.chromium.Mtpd: Sent: 100 (10/min) Received: 20 (2/min) |
|
CHROME_DBUS_EXPORT std::string GetAsString(ShowInString show, |
|
FormatString format); |
|
|
|
namespace testing { |
|
// Sets |sent| to the number of sent calls, |received| to the number of |
|
// received calls, and |blocking| to the number of sent blocking calls for |
|
// service+interface+method. Used in unittests. |
|
CHROME_DBUS_EXPORT bool GetCalls(const std::string& service, |
|
const std::string& interface, |
|
const std::string& method, |
|
int* sent, |
|
int* received, |
|
int* blocking); |
|
} // namespace testing |
|
|
|
} // namespace statistics |
|
} // namespace dbus |
|
|
|
#endif // DBUS_DBUS_STATISTICS_H_
|
|
|