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/files/file.h"
     10 #include "base/memory/ref_counted_memory.h"
     11 #include "base/task_runner.h"
     12 #include "chromeos/chromeos_export.h"
     13 #include "chromeos/dbus/dbus_client.h"
     14 
     15 #include <map>
     16 
     17 namespace metrics {
     18 class PerfDataProto;
     19 }
     20 
     21 namespace chromeos {
     22 
     23 // DebugDaemonClient is used to communicate with the debug daemon.
     24 class CHROMEOS_EXPORT DebugDaemonClient : public DBusClient {
     25  public:
     26   virtual ~DebugDaemonClient();
     27 
     28   // Called once GetDebugLogs() is complete. Takes one parameter:
     29   // - succeeded: was the logs stored successfully.
     30   typedef base::Callback<void(bool succeeded)> GetDebugLogsCallback;
     31 
     32   // Requests to store debug logs into |file| and calls |callback|
     33   // when completed. Debug logs will be stored in the .tgz if
     34   // |is_compressed| is true, otherwise in logs will be stored in .tar format.
     35   virtual void DumpDebugLogs(bool is_compressed,
     36                              base::File file,
     37                              scoped_refptr<base::TaskRunner> task_runner,
     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(
    122       scoped_refptr<base::TaskRunner> task_runner,
    123       const StopSystemTracingCallback& callback) = 0;
    124 
    125   // Returns an empty SystemTracingCallback that does nothing.
    126   static StopSystemTracingCallback EmptyStopSystemTracingCallback();
    127 
    128   // Called once TestICMP() is complete. Takes two parameters:
    129   // - succeeded: information was obtained successfully.
    130   // - status: information about ICMP connectivity to a specified host as json.
    131   //   For details please refer to
    132   //   https://gerrit.chromium.org/gerrit/#/c/30310/2/src/helpers/icmp.cc
    133   typedef base::Callback<void(bool succeeded, const std::string& status)>
    134       TestICMPCallback;
    135 
    136   // Tests ICMP connectivity to a specified host. The |ip_address| contains the
    137   // IPv4 or IPv6 address of the host, for example "8.8.8.8".
    138   virtual void TestICMP(const std::string& ip_address,
    139                         const TestICMPCallback& callback) = 0;
    140 
    141   // Tests ICMP connectivity to a specified host. The |ip_address| contains the
    142   // IPv4 or IPv6 address of the host, for example "8.8.8.8".
    143   virtual void TestICMPWithOptions(
    144       const std::string& ip_address,
    145       const std::map<std::string, std::string>& options,
    146       const TestICMPCallback& callback) = 0;
    147 
    148   // Trigger uploading of crashes.
    149   virtual void UploadCrashes() = 0;
    150 
    151   // Factory function, creates a new instance and returns ownership.
    152   // For normal usage, access the singleton via DBusThreadManager::Get().
    153   static DebugDaemonClient* Create();
    154 
    155  protected:
    156   // Create() should be used instead.
    157   DebugDaemonClient();
    158 
    159  private:
    160   DISALLOW_COPY_AND_ASSIGN(DebugDaemonClient);
    161 };
    162 
    163 }  // namespace chromeos
    164 
    165 #endif  // CHROMEOS_DBUS_DEBUG_DAEMON_CLIENT_H_
    166