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