2023-10-27 22:56:48 +00:00
|
|
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
|
|
// This source code is licensed under both the GPLv2 (found in the
|
|
|
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
|
|
// (found in the LICENSE.Apache file in the root directory).
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2024-02-12 19:24:56 +00:00
|
|
|
#include <cstdint>
|
2023-10-27 22:56:48 +00:00
|
|
|
#include <string>
|
|
|
|
|
|
|
|
#include "rocksdb/rocksdb_namespace.h"
|
|
|
|
|
|
|
|
namespace ROCKSDB_NAMESPACE {
|
|
|
|
class SystemClock;
|
|
|
|
|
|
|
|
struct OffpeakTimeInfo {
|
2023-11-06 19:43:59 +00:00
|
|
|
bool is_now_offpeak = false;
|
|
|
|
int seconds_till_next_offpeak_start = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct OffpeakTimeOption {
|
|
|
|
static constexpr int kSecondsPerDay = 86400;
|
|
|
|
static constexpr int kSecondsPerHour = 3600;
|
|
|
|
static constexpr int kSecondsPerMinute = 60;
|
|
|
|
|
|
|
|
OffpeakTimeOption();
|
|
|
|
explicit OffpeakTimeOption(const std::string& offpeak_time_string);
|
|
|
|
std::string daily_offpeak_time_utc = "";
|
|
|
|
int daily_offpeak_start_time_utc = 0;
|
|
|
|
int daily_offpeak_end_time_utc = 0;
|
|
|
|
|
|
|
|
void SetFromOffpeakTimeString(const std::string& offpeak_time_string);
|
|
|
|
|
|
|
|
OffpeakTimeInfo GetOffpeakTimeInfo(const int64_t& current_time) const;
|
2023-10-27 22:56:48 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace ROCKSDB_NAMESPACE
|