Index: chromeos/device_event_log_impl.h |
diff --git a/chromeos/device_event_log_impl.h b/chromeos/device_event_log_impl.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f0535719c3e145cc095aeda08f50436b4d2fe65b |
--- /dev/null |
+++ b/chromeos/device_event_log_impl.h |
@@ -0,0 +1,83 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROMEOS_DEVICE_EVENT_LOG_IMPL_H_ |
+#define CHROMEOS_DEVICE_EVENT_LOG_IMPL_H_ |
+ |
+#include <list> |
+#include <string> |
+ |
+#include "base/time/time.h" |
+#include "chromeos/chromeos_export.h" |
+#include "chromeos/device_event_log.h" |
+ |
+namespace chromeos { |
+ |
+namespace device_event_log { |
+ |
+class CHROMEOS_EXPORT DeviceEventLogImpl { |
+ public: |
+ struct LogEntry { |
+ LogEntry(const char* filedesc, |
+ int file_line, |
+ LogType log_type, |
+ LogLevel log_level, |
+ const std::string& event); |
+ |
+ std::string file; |
+ int file_line; |
+ LogType log_type; |
+ LogLevel log_level; |
+ std::string event; |
+ base::Time time; |
+ int count; |
+ }; |
+ |
+ explicit DeviceEventLogImpl(size_t max_entries); |
+ ~DeviceEventLogImpl(); |
+ |
+ // Implements device_event_log::AddEntry. |
+ void AddEntry(const char* file, |
+ int file_line, |
+ LogType type, |
+ LogLevel level, |
+ const std::string& event); |
+ |
+ // Implements device_event_log::GetAsString. |
+ std::string GetAsString(StringOrder order, |
+ const std::string& format, |
+ LogType log_type, |
+ LogLevel max_level, |
+ size_t max_events); |
+ |
+ // Called from device_event_log::AddEntry if the global instance has not been |
+ // created (or has already been destroyed). Logs to LOG(ERROR) or VLOG(1). |
+ static void SendToVLogOrErrorLog(const char* file, |
+ int file_line, |
+ LogType type, |
+ LogLevel log_level, |
+ const std::string& event); |
+ |
+ private: |
+ friend class DeviceEventLogTest; |
+ |
+ typedef std::list<LogEntry> LogEntryList; |
+ |
+ void AddLogEntry(const LogEntry& entry); |
+ |
+ // For testing |
+ size_t max_entries() const { return max_entries_; } |
+ void set_max_entries_for_test(size_t entries) { max_entries_ = entries; } |
+ |
+ size_t max_entries_; |
+ LogEntryList entries_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DeviceEventLogImpl); |
+}; |
+ |
+} // namespace device_event_log |
+ |
+} // namespace chromeos |
+ |
+#endif // CHROMEOS_DEVICE_EVENT_LOG_IMPL_H_ |