diff options
Diffstat (limited to 'src/mongo/util/future_impl.h')
-rw-r--r-- | src/mongo/util/future_impl.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mongo/util/future_impl.h b/src/mongo/util/future_impl.h index 6fe25a51fb5..b1ef0ffd955 100644 --- a/src/mongo/util/future_impl.h +++ b/src/mongo/util/future_impl.h @@ -654,6 +654,10 @@ public: return _shared->state.load(std::memory_order_acquire) == SSBState::kFinished; } + bool valid() const { + return _shared != nullptr; + } + void wait(Interruptible* interruptible) const { _shared->wait(interruptible); } @@ -757,6 +761,10 @@ public: return _inner.isReady(); } + bool valid() const { + return _inner.valid(); + } + void wait(Interruptible* interruptible) const { _inner.wait(interruptible); } @@ -824,6 +832,16 @@ public: return _immediate || _shared.isReady(); } + /** + * Returns whether the Future has or can eventually have access to a deferred value or status. + * + * NOTE: this does not return whether that deferred value is itself valid. It could have been + * moved from. + */ + bool valid() const { + return _immediate || _shared.valid(); + } + void wait(Interruptible* interruptible) const { if (_immediate) return; |