49 lines
1.5 KiB
C++
49 lines
1.5 KiB
C++
|
|
// 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
|