Packages
rocksdb
2.5.0
3.1.2
3.1.1
3.1.0
3.0.0
2.6.2
2.6.1
retired
2.6.0
retired
2.5.0
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.1
1.1.0
1.0.0
0.26.2
0.26.1
0.26.0
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
RocksDB for Erlang
Current section
Files
Jump to
Current section
Files
deps/rocksdb/options/offpeak_time_info.cc
// 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).
#include "options/offpeak_time_info.h"
#include "rocksdb/system_clock.h"
#include "util/string_util.h"
namespace ROCKSDB_NAMESPACE {
OffpeakTimeOption::OffpeakTimeOption() : OffpeakTimeOption("") {}
OffpeakTimeOption::OffpeakTimeOption(const std::string& offpeak_time_string) {
SetFromOffpeakTimeString(offpeak_time_string);
}
void OffpeakTimeOption::SetFromOffpeakTimeString(
const std::string& offpeak_time_string) {
const int old_start_time = daily_offpeak_start_time_utc;
const int old_end_time = daily_offpeak_end_time_utc;
if (TryParseTimeRangeString(offpeak_time_string, daily_offpeak_start_time_utc,
daily_offpeak_end_time_utc)) {
daily_offpeak_time_utc = offpeak_time_string;
} else {
daily_offpeak_start_time_utc = old_start_time;
daily_offpeak_end_time_utc = old_end_time;
}
}
OffpeakTimeInfo OffpeakTimeOption::GetOffpeakTimeInfo(
const int64_t& current_time) const {
OffpeakTimeInfo offpeak_time_info;
if (daily_offpeak_start_time_utc == daily_offpeak_end_time_utc) {
return offpeak_time_info;
}
int seconds_since_midnight = static_cast<int>(current_time % kSecondsPerDay);
int seconds_since_midnight_to_nearest_minute =
(seconds_since_midnight / kSecondsPerMinute) * kSecondsPerMinute;
// if the offpeak duration spans overnight (i.e. 23:30 - 4:30 next day)
if (daily_offpeak_start_time_utc > daily_offpeak_end_time_utc) {
offpeak_time_info.is_now_offpeak =
daily_offpeak_start_time_utc <=
seconds_since_midnight_to_nearest_minute ||
seconds_since_midnight_to_nearest_minute <= daily_offpeak_end_time_utc;
} else {
offpeak_time_info.is_now_offpeak =
daily_offpeak_start_time_utc <=
seconds_since_midnight_to_nearest_minute &&
seconds_since_midnight_to_nearest_minute <= daily_offpeak_end_time_utc;
}
offpeak_time_info.seconds_till_next_offpeak_start =
seconds_since_midnight < daily_offpeak_start_time_utc
? daily_offpeak_start_time_utc - seconds_since_midnight
: ((daily_offpeak_start_time_utc + kSecondsPerDay) -
seconds_since_midnight);
return offpeak_time_info;
}
} // namespace ROCKSDB_NAMESPACE