• 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 "base/task/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 base::CancelableTaskTracker::TryCancel() with the returned
48   // task ID to cancel
49   // task and callback.
50   virtual base::CancelableTaskTracker::TaskId RequestSyslogs(
51       bool compress_logs,
52       SyslogsContext context,
53       const ReadCompleteCallback& callback,
54       base::CancelableTaskTracker* tracker) = 0;
55 
56  protected:
~SyslogsProvider()57   virtual ~SyslogsProvider() {}
58 };
59 
60 }  // namespace system
61 }  // namespace chromeos
62 
63 #endif  // CHROME_BROWSER_CHROMEOS_SYSTEM_SYSLOGS_PROVIDER_H_
64