| // 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 |