summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/pipeline_d.h
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2012-08-02 19:02:17 -0400
committerMathias Stearn <mathias@10gen.com>2012-08-02 19:02:17 -0400
commit3bb4644a36c22179df8decd0152a8c5dd77a852c (patch)
treeae36e5472825fe69fbbf671ef3796d070d4a629a /src/mongo/db/pipeline/pipeline_d.h
parente9bfafe93d0509a46f43e1ee8d8cc0a2bb64bd53 (diff)
downloadmongo-3bb4644a36c22179df8decd0152a8c5dd77a852c.tar.gz
Move remaining aggregation files from commands directory to pipeline
pipeline_command.cpp remains in commands because it contains the actual command
Diffstat (limited to 'src/mongo/db/pipeline/pipeline_d.h')
-rwxr-xr-xsrc/mongo/db/pipeline/pipeline_d.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/pipeline_d.h b/src/mongo/db/pipeline/pipeline_d.h
new file mode 100755
index 00000000000..a514fe22fbc
--- /dev/null
+++ b/src/mongo/db/pipeline/pipeline_d.h
@@ -0,0 +1,62 @@
+/**
+ * Copyright 2012 (c) 10gen Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "pch.h"
+
+namespace mongo {
+ class DocumentSourceCursor;
+ class Pipeline;
+
+ /*
+ PipelineD is an extension of the Pipeline class, but with additional
+ material that references symbols that are not available in mongos,
+ where the remainder of the Pipeline class also functions. PipelineD
+ is a friend of Pipeline so that it can have equal access to Pipeline's
+ members.
+
+ See the friend declaration in Pipeline.
+ */
+ class PipelineD {
+ public:
+
+ /**
+ Create a Cursor wrapped in a DocumentSourceCursor, which is suitable
+ to be the first source for a pipeline to begin with. This source
+ will feed the execution of the pipeline.
+
+ This method looks for early pipeline stages that can be folded into
+ the underlying cursor, and when a cursor can absorb those, they
+ are removed from the head of the pipeline. For example, an
+ early match can be removed and replaced with a Cursor that will
+ do an index scan.
+
+ @param pPipeline the logical "this" for this operation
+ @param dbName the name of the database
+ @param pExpCtx the expression context for this pipeline
+ @returns the cursor that was created
+ */
+ static intrusive_ptr<DocumentSourceCursor> prepareCursorSource(
+ const intrusive_ptr<Pipeline> &pPipeline,
+ const string &dbName,
+ const intrusive_ptr<ExpressionContext> &pExpCtx);
+
+ private:
+ PipelineD(); // does not exist: prevent instantiation
+ };
+
+} // namespace mongo