diff options
author | Mathias Stearn <mathias@10gen.com> | 2012-08-02 19:02:17 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2012-08-02 19:02:17 -0400 |
commit | 3bb4644a36c22179df8decd0152a8c5dd77a852c (patch) | |
tree | ae36e5472825fe69fbbf671ef3796d070d4a629a /src/mongo/db/pipeline/pipeline_d.h | |
parent | e9bfafe93d0509a46f43e1ee8d8cc0a2bb64bd53 (diff) | |
download | mongo-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-x | src/mongo/db/pipeline/pipeline_d.h | 62 |
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 |