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: 57 virtual ~SyslogsProvider() {} 58 }; 59 60 } // namespace system 61 } // namespace chromeos 62 63 #endif // CHROME_BROWSER_CHROMEOS_SYSTEM_SYSLOGS_PROVIDER_H_ 64