Home | History | Annotate | Download | only in dbus
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROMEOS_DBUS_DEBUG_DAEMON_CLIENT_H_
      6 #define CHROMEOS_DBUS_DEBUG_DAEMON_CLIENT_H_
      7 
      8 #include "base/callback.h"
      9 #include "base/platform_file.h"
     10 #include "base/memory/ref_counted_memory.h"
     11 #include "chromeos/chromeos_export.h"
     12 #include "chromeos/dbus/dbus_client_implementation_type.h"
     13 
     14 #include <map>
     15 
     16 namespace dbus {
     17 class Bus;
     18 }  // namespace dbus
     19 
     20 namespace metrics {
     21 class PerfDataProto;
     22 }
     23 
     24 namespace chromeos {
     25 
     26 // DebugDaemonClient is used to communicate with the debug daemon.
     27 class CHROMEOS_EXPORT DebugDaemonClient {
     28  public:
     29   virtual ~DebugDaemonClient();
     30 
     31   // Called once GetDebugLogs() is complete. Takes one parameter:
     32   // - succeeded: was the logs stored successfully.
     33   typedef base::Callback<void(bool succeeded)> GetDebugLogsCallback;
     34 
     35   // Requests to store debug logs into |file| and calls |callback|
     36   // when completed. Debug logs will be stored in the .tgz format.
     37   virtual void GetDebugLogs(base::PlatformFile file,
     38                             const GetDebugLogsCallback& callback) = 0;
     39 
     40   // Called once SetDebugMode() is complete. Takes one parameter:
     41   // - succeeded: debug mode was changed successfully.
     42   typedef base::Callback<void(bool succeeded)> SetDebugModeCallback;
     43 
     44   // Requests to change debug mode to given |subsystem| and calls
     45   // |callback| when completed. |subsystem| should be one of the
     46   // following: "wifi", "ethernet", "cellular" or "none".
     47   virtual void SetDebugMode(const std::string& subsystem,
     48                             const SetDebugModeCallback& callback) = 0;
     49 
     50   // Called once GetRoutes() is complete.
     51   typedef base::Callback<void(bool succeeded,
     52                               const std::vector<std::string>& routes)>
     53       GetRoutesCallback;
     54   virtual void GetRoutes(bool numeric, bool ipv6,
     55                          const GetRoutesCallback& callback) = 0;
     56 
     57   // Called once GetNetworkStatus() is complete.
     58   typedef base::Callback<void(bool succeeded, const std::string& status)>
     59       GetNetworkStatusCallback;
     60 
     61   // Gets information about network status as json.
     62   virtual void GetNetworkStatus(const GetNetworkStatusCallback& callback) = 0;
     63 
     64   // Called once GetModemStatus() is complete.
     65   typedef base::Callback<void(bool succeeded, const std::string& status)>
     66       GetModemStatusCallback;
     67 
     68   // Gets information about modem status as json.
     69   virtual void GetModemStatus(const GetModemStatusCallback& callback) = 0;
     70 
     71   // Called once GetWiMaxStatus() is complete.
     72   typedef base::Callback<void(bool succeeded, const std::string& status)>
     73       GetWiMaxStatusCallback;
     74 
     75   // Gets information about WiMAX status as json.
     76   virtual void GetWiMaxStatus(const GetWiMaxStatusCallback& callback) = 0;
     77 
     78   // Called once GetNetworkInterfaces() is complete. Takes two parameters:
     79   // - succeeded: information was obtained successfully.
     80   // - status: network interfaces information in json. For details, please refer
     81   //   to http://gerrit.chromium.org/gerrit/#/c/28045/5/src/helpers/netif.cc
     82   typedef base::Callback<void(bool succeeded, const std::string& status)>
     83       GetNetworkInterfacesCallback;
     84 
     85   // Gets information about network interfaces as json.
     86   virtual void GetNetworkInterfaces(
     87       const GetNetworkInterfacesCallback& callback) = 0;
     88 
     89   // Called once GetPerfData() is complete only if the the data is successfully
     90   // obtained from debugd.
     91   typedef base::Callback<void(const std::vector<uint8>& data)>
     92       GetPerfDataCallback;
     93 
     94   // Runs perf for |duration| seconds and returns data collected.
     95   virtual void GetPerfData(uint32_t duration,
     96                            const GetPerfDataCallback& callback) = 0;
     97 
     98   // Callback type for GetScrubbedLogs(), GetAllLogs() or GetUserLogFiles().
     99   typedef base::Callback<void(bool succeeded,
    100                               const std::map<std::string, std::string>& logs)>
    101       GetLogsCallback;
    102 
    103   // Gets scrubbed logs from debugd.
    104   virtual void GetScrubbedLogs(const GetLogsCallback& callback) = 0;
    105 
    106   // Gets all logs collected by debugd.
    107   virtual void GetAllLogs(const GetLogsCallback& callback) = 0;
    108 
    109   // Gets list of user log files that must be read by Chrome.
    110   virtual void GetUserLogFiles(const GetLogsCallback& callback) = 0;
    111 
    112   // Requests to start system/kernel tracing.
    113   virtual void StartSystemTracing() = 0;
    114 
    115   // Called once RequestStopSystemTracing() is complete. Takes one parameter:
    116   // - result: the data collected while tracing was active
    117   typedef base::Callback<void(const scoped_refptr<base::RefCountedString>&
    118       result)> StopSystemTracingCallback;
    119 
    120   // Requests to stop system tracing and calls |callback| when completed.
    121   virtual bool RequestStopSystemTracing(const StopSystemTracingCallback&
    122       callback) = 0;
    123 
    124   // Returns an empty SystemTracingCallback that does nothing.
    125   static StopSystemTracingCallback EmptyStopSystemTracingCallback();
    126 
    127   // Called once TestICMP() is complete. Takes two parameters:
    128   // - succeeded: information was obtained successfully.
    129   // - status: information about ICMP connectivity to a specified host as json.
    130   //   For details please refer to
    131   //   https://gerrit.chromium.org/gerrit/#/c/30310/2/src/helpers/icmp.cc
    132   typedef base::Callback<void(bool succeeded, const std::string& status)>
    133       TestICMPCallback;
    134 
    135   // Tests ICMP connectivity to a specified host. The |ip_address| contains the
    136   // IPv4 or IPv6 address of the host, for example "8.8.8.8".
    137   virtual void TestICMP(const std::string& ip_address,
    138                         const TestICMPCallback& callback) = 0;
    139 
    140   // Tests ICMP connectivity to a specified host. The |ip_address| contains the
    141   // IPv4 or IPv6 address of the host, for example "8.8.8.8".
    142   virtual void TestICMPWithOptions(
    143       const std::string& ip_address,
    144       const std::map<std::string, std::string>& options,
    145       const TestICMPCallback& callback) = 0;
    146 
    147   // Factory function, creates a new instance and returns ownership.
    148   // For normal usage, access the singleton via DBusThreadManager::Get().
    149   static DebugDaemonClient* Create(DBusClientImplementationType type,
    150                                    dbus::Bus* bus);
    151  protected:
    152   // Create() should be used instead.
    153   DebugDaemonClient();
    154 
    155  private:
    156   DISALLOW_COPY_AND_ASSIGN(DebugDaemonClient);
    157 };
    158 
    159 }  // namespace chromeos
    160 
    161 #endif  // CHROMEOS_DBUS_DEBUG_DAEMON_CLIENT_H_
    162