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_ 63