Home | History | Annotate | Download | only in system
      1 // Copyright (c) 2011 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 CHROME_BROWSER_CHROMEOS_SYSTEM_SYSLOGS_PROVIDER_H_
      6 #define CHROME_BROWSER_CHROMEOS_SYSTEM_SYSLOGS_PROVIDER_H_
      7 
      8 #include <map>
      9 #include <string>
     10 
     11 #include "base/callback.h"
     12 #include "chrome/common/cancelable_task_tracker.h"
     13 
     14 namespace chromeos {
     15 namespace system {
     16 
     17 // Maximum number of bytes in system info log chunk to be still included
     18 // in product specific data.
     19 extern const size_t kFeedbackMaxLength;
     20 
     21 // Maximum number of lines in system info log chunk to be still included
     22 // in product specific data.
     23 extern const size_t kFeedbackMaxLineCount;
     24 
     25 typedef std::map<std::string, std::string> LogDictionaryType;
     26 
     27 // This interface provides access to Chrome OS syslogs.
     28 class SyslogsProvider {
     29  public:
     30   static SyslogsProvider* GetInstance();
     31 
     32   // The callback type used with RequestSyslogs().
     33   typedef base::Callback<void(LogDictionaryType*,
     34                               std::string*)> ReadCompleteCallback;
     35 
     36   // Used to specify the syslogs context with RequestSyslogs().
     37   enum SyslogsContext {
     38     SYSLOGS_FEEDBACK,
     39     SYSLOGS_SYSINFO,
     40     SYSLOGS_NETWORK,
     41     SYSLOGS_DEFAULT
     42   };
     43 
     44   // Request system logs. Read happens on the FILE thread and callback is
     45   // called on the thread this is called from. Logs are owned by callback
     46   // function (use delete when done with them).
     47   // Call CancelableTaskTracker::TryCancel() with the returned task ID to cancel
     48   // task and callback.
     49   virtual CancelableTaskTracker::TaskId RequestSyslogs(
     50       bool compress_logs,
     51       SyslogsContext context,
     52       const ReadCompleteCallback& callback,
     53       CancelableTaskTracker* tracker) = 0;
     54 
     55  protected:
     56   virtual ~SyslogsProvider() {}
     57 };
     58 
     59 }  // namespace system
     60 }  // namespace chromeos
     61 
     62 #endif  // CHROME_BROWSER_CHROMEOS_SYSTEM_SYSLOGS_PROVIDER_H_
     63