summaryrefslogtreecommitdiff
path: root/src/mongo/util/future_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/util/future_impl.h')
-rw-r--r--src/mongo/util/future_impl.h18
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;