- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / system / syslogs_provider.h
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_