summaryrefslogtreecommitdiff
path: root/src/mongo/db/clientcursor.h
diff options
context:
space:
mode:
authorMatthew Russotto <matthew.russotto@10gen.com>2017-07-10 13:47:13 -0400
committerMatthew Russotto <matthew.russotto@10gen.com>2017-07-11 13:51:24 -0400
commit3bab15739e421e9eed4bf180cbcf5c7392a9a90d (patch)
treef346909f73f9cac8d1eaf3811944e521945cf8d8 /src/mongo/db/clientcursor.h
parentd712243cb381d5ae98d4bc132ace16aac91d0fe9 (diff)
downloadmongo-3bab15739e421e9eed4bf180cbcf5c7392a9a90d.tar.gz
SERVER-29128 Make $changeNotification stage return a tailable, awaitData cursor that continuously gives out oplog entries
Diffstat (limited to 'src/mongo/db/clientcursor.h')
-rw-r--r--src/mongo/db/clientcursor.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mongo/db/clientcursor.h b/src/mongo/db/clientcursor.h
index 32fb018a8e1..f75d41e3089 100644
--- a/src/mongo/db/clientcursor.h
+++ b/src/mongo/db/clientcursor.h
@@ -71,6 +71,20 @@ struct ClientCursorParams {
}
}
+ void setTailable(bool tailable) {
+ if (tailable)
+ queryOptions |= QueryOption_CursorTailable;
+ else
+ queryOptions &= ~QueryOption_CursorTailable;
+ }
+
+ void setAwaitData(bool awaitData) {
+ if (awaitData)
+ queryOptions |= QueryOption_AwaitData;
+ else
+ queryOptions &= ~QueryOption_AwaitData;
+ }
+
std::unique_ptr<PlanExecutor, PlanExecutor::Deleter> exec;
const NamespaceString nss;
std::vector<UserName> authenticatedUsers;
@@ -127,10 +141,23 @@ public:
return _exec.get();
}
+ /**
+ * Returns the query options bitmask. If you'd like to know if the cursor is tailable or
+ * awaitData, prefer using the specific methods isTailable() and isAwaitData() over using this
+ * method.
+ */
int queryOptions() const {
return _queryOptions;
}
+ bool isTailable() const {
+ return _queryOptions & QueryOption_CursorTailable;
+ }
+
+ bool isAwaitData() const {
+ return _queryOptions & QueryOption_AwaitData;
+ }
+
const BSONObj& getOriginatingCommandObj() const {
return _originatingCommand;
}