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