blob: e41afcb43a8e2cf4fad180513c7f0b3fd13a9872 [file] [log] [blame]
// Copyright 2019 The Fuchsia 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 SRC_VIRTUALIZATION_TESTS_PERIODIC_LOGGER_H_
#define SRC_VIRTUALIZATION_TESTS_PERIODIC_LOGGER_H_
#include <lib/zx/time.h>
#include "src/lib/fxl/logging.h"
// Print a log message every |logging_interval| units of time.
//
// Users should periodically call |LogIfRequired|. Once |logging_interval|
// has passed since class creation, a log message will be printed. Log
// messages will then continue to be printed every |logging_interval|.
class PeriodicLogger {
public:
PeriodicLogger(std::string operation, zx::duration logging_interval);
~PeriodicLogger();
// Print a log message about the current operation if enough time has passed
// since the operation started / since the last log message.
void LogIfRequired();
private:
const zx::time start_time_;
const std::string operation_;
const zx::duration logging_interval_;
bool message_printed_ = false;
zx::time last_log_time_;
};
#endif // SRC_VIRTUALIZATION_TESTS_PERIODIC_LOGGER_H_