• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
~SyslogsProvider()56    virtual ~SyslogsProvider() {}
57  };
58  
59  }  // namespace system
60  }  // namespace chromeos
61  
62  #endif  // CHROME_BROWSER_CHROMEOS_SYSTEM_SYSLOGS_PROVIDER_H_
63