blob: 7da9f6560f6e23e618e38f5805b9eab5a2694f78 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/task/sequence_manager/timing_wheel.h"
namespace base::sequence_manager::internal {
////////////////////////////////////////////////////////////////////////////////
// TimingWheelHandle
TimingWheelHandle::TimingWheelHandle(TimingWheelHandle&& other) noexcept
: bucket_index_(std::exchange(other.bucket_index_, kInvalidIndex)),
element_index_(std::exchange(other.element_index_, kInvalidIndex)) {}
TimingWheelHandle& TimingWheelHandle::operator=(
TimingWheelHandle&& other) noexcept {
bucket_index_ = std::exchange(other.bucket_index_, kInvalidIndex);
element_index_ = std::exchange(other.element_index_, kInvalidIndex);
return *this;
}
// static
TimingWheelHandle TimingWheelHandle::Invalid() {
return TimingWheelHandle();
}
void TimingWheelHandle::Reset() {
bucket_index_ = kInvalidIndex;
element_index_ = kInvalidIndex;
}
bool TimingWheelHandle::IsValid() const {
return bucket_index_ != kInvalidIndex && element_index_ != kInvalidIndex;
}
size_t TimingWheelHandle::bucket_index() const {
return bucket_index_;
}
size_t TimingWheelHandle::element_index() const {
return element_index_;
}
TimingWheelHandle::TimingWheelHandle(size_t bucket_index, size_t element_index)
: bucket_index_(bucket_index), element_index_(element_index) {}
} // namespace base::sequence_manager::internal