blob: e3778d5dff15460c8e48146b47ba135cec51c666 [file] [log] [blame]
// Copyright 2021 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.
#ifndef TIMBERSLIDE_STRING_TRANSFORMER_H_
#define TIMBERSLIDE_STRING_TRANSFORMER_H_
#include <string>
#include <base/time/time.h>
#include <re2/re2.h>
namespace timberslide {
//
// Has a member function which adds the host timestamp
// to the beginning of each line passed to it.
//
class StringTransformer {
public:
StringTransformer()
: timestamp_(base::Time::UnixEpoch()),
logline_tm_(base::Time::UnixEpoch()),
ec_timestamp_pattern_(R"(\[(\d+\.\d+))") {}
std::string AddHostTs(const std::string& s);
void UpdateTimestamps(int64_t ec_uptime_ms, const base::Time& now);
private:
std::string FormatTime(const base::Time& time);
base::Time GetLineTimestamp(const std::string& s);
int64_t ec_current_uptime_ms_ = -1;
base::Time timestamp_;
base::Time logline_tm_;
RE2 ec_timestamp_pattern_;
};
} // namespace timberslide
#endif // TIMBERSLIDE_STRING_TRANSFORMER_H_