• 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_CROS_SYSLOGS_LIBRARY_H_
6 #define CHROME_BROWSER_CHROMEOS_CROS_SYSLOGS_LIBRARY_H_
7 #pragma once
8 
9 #include "base/memory/singleton.h"
10 #include "content/browser/cancelable_request.h"
11 #include "third_party/cros/chromeos_syslogs.h"
12 
13 class CancelableRequestConsumerBase;
14 
15 namespace chromeos {
16 
17 // This interface defines interaction with the ChromeOS syslogs APIs.
18 class SyslogsLibrary : public CancelableRequestProvider {
19  public:
20   typedef Callback2<LogDictionaryType*,
21                     std::string*>::Type ReadCompleteCallback;
22 
SyslogsLibrary()23   SyslogsLibrary() {}
~SyslogsLibrary()24   virtual ~SyslogsLibrary() {}
25 
26   // Request system logs. Read happens on the FILE thread and callback is
27   // called on the thread this is called from (via ForwardResult).
28   // Logs are owned by callback function (use delete when done with them).
29   // Returns the request handle. Call CancelRequest(Handle) to cancel
30   // the request before the callback gets called.
31   virtual Handle RequestSyslogs(
32       bool compress_logs, bool feedback_context,
33       CancelableRequestConsumerBase* consumer,
34       ReadCompleteCallback* callback) = 0;
35 
36   // Factory function, creates a new instance and returns ownership.
37   // For normal usage, access the singleton via CrosLibrary::Get().
38   static SyslogsLibrary* GetImpl(bool stub);
39 };
40 
41 }  // namespace chromeos
42 
43 #endif  // CHROME_BROWSER_CHROMEOS_CROS_SYSLOGS_LIBRARY_H_
44