#include "bmc/daemon_context_bmc.h"

#include <cstdint>

#include "bmc/scheduler_bmc.h"
#include "daemon_context.h"
#include "persistent_storage.h"
#include "scheduler_interface.h"
#include "absl/synchronization/mutex.h"
#include "absl/time/time.h"
#include "boost/asio/io_context.hpp"  // NOLINT(readability/boost)

namespace safepower_agent {

using boost::asio::io_context;

DaemonContextBMC::DaemonContextBMC()
    : io_context_(1),  // concurrency_hint 1
      scheduler_(io_context_),
      persistent_storage_manager_() {
  epoch_ms_ = absl::ToUnixMillis(now());
}

DaemonContextBMC& DaemonContextBMC::Get() {
  return static_cast<DaemonContextBMC&>(DaemonContext::Get());
}

SchedulerInterface& DaemonContextBMC::scheduler() { return scheduler_; }

PersistentStorageManager& DaemonContextBMC::persistent_storage_manager() {
  absl::MutexLock lock(&persistent_storage_manager_mutex_);
  if (!persistent_storage_manager_.has_value()) {
    persistent_storage_manager_.emplace(
        config().gpowerd_config().persistent_storage_config());
  }
  return *persistent_storage_manager_;
}

io_context& DaemonContextBMC::get_io_context() { return io_context_; }

uint64_t DaemonContextBMC::epoch_ms() { return epoch_ms_; }

}  // namespace safepower_agent
