@return [day active, time active].
| 347 | |
| 348 | /// @return [day active, time active]. |
| 349 | std::pair<bool, bool> IsActiveImpl(RuleSequence const & rule, time_t const timestamp) |
| 350 | { |
| 351 | if (rule.IsTwentyFourHours()) |
| 352 | return {true, true}; |
| 353 | |
| 354 | auto const dateTimeTM = MakeTimetuple(timestamp); |
| 355 | if (!HasExtendedHours(rule)) |
| 356 | return MakeActiveResult(rule, dateTimeTM, rule.GetTimes()); |
| 357 | |
| 358 | TTimespans originalNormalizedSpans; |
| 359 | Timespan additionalSpan; |
| 360 | SplitExtendedHours(rule.GetTimes(), originalNormalizedSpans, additionalSpan); |
| 361 | |
| 362 | auto const res1 = MakeActiveResult(rule, dateTimeTM, originalNormalizedSpans); |
| 363 | if (res1.first && res1.second) |
| 364 | return res1; |
| 365 | |
| 366 | time_t constexpr twentyFourHoursShift = 24 * 60 * 60; |
| 367 | auto const dateTimeTMShifted = MakeTimetuple(timestamp - twentyFourHoursShift); |
| 368 | |
| 369 | auto const res2 = MakeActiveResult(rule, dateTimeTMShifted, additionalSpan); |
| 370 | return { res1.first || res2.first, res2.second }; |
| 371 | } |
| 372 | |
| 373 | /// Check if r1 is more general range and includes r2. |
| 374 | bool IsR1IncludesR2(RuleSequence const & r1, RuleSequence const & r2) |
no test coverage detected