/*
 *
 *      Copyright (c) 2017 Nest Labs, Inc.
 *      All rights reserved.
 *
 *      This document is the property of Nest. It is considered
 *      confidential and proprietary information.
 *
 *      This document may not be reproduced or transmitted in any form,
 *      in whole or in part, without the express written permission of
 *      Nest.
 *
 */

#ifndef CRASH_REPORTER_RUNTIME_LOGGER_H
#define CRASH_REPORTER_RUNTIME_LOGGER_H

#include <chrono>

// Logs the time it took to execute a particular scope
class RuntimeLogger {
public:
  RuntimeLogger(const std::string &name)
    : name_(name),
      start_(std::chrono::steady_clock::now())
  {}

  ~RuntimeLogger()
  {
    auto duration = std::chrono::steady_clock::now() - start_;
    LOG(INFO) << "RuntimeLogger: " << name_ << " took " <<
      std::chrono::duration<double>(duration).count() << "s";
  }

private:
  std::string name_;
  std::chrono::steady_clock::time_point start_;
};

#endif
