| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "croslog/log_entry.h" |
| |
| namespace croslog { |
| |
| LogEntry::LogEntry(base::Time time, |
| Severity severity, |
| std::string&& tag, |
| int pid, |
| std::string&& message, |
| std::string&& entire_line) |
| : time_(time), |
| severity_(severity), |
| tag_(std::move(tag)), |
| pid_(pid), |
| message_(std::move(message)), |
| entire_line_(std::move(entire_line)) {} |
| |
| void LogEntry::AppendLinesToMessage(const std::list<std::string>& lines) { |
| // Calculates the size of buffer to expand. |
| size_t lines_size = 0; |
| for (const auto& line : lines) { |
| lines_size += line.size() + 1; |
| } |
| |
| // Pre-reserves buffer for efficiency. |
| message_.reserve(message_.size() + lines_size); |
| entire_line_.reserve(entire_line_.size() + lines_size); |
| |
| // Appends lines |
| for (const auto& line : lines) { |
| message_.append("\n", 1); |
| message_.append(line); |
| |
| entire_line_.append("\n", 1); |
| entire_line_.append(line); |
| } |
| } |
| |
| } // namespace croslog |