summaryrefslogtreecommitdiff
path: root/src/mongo/rpc/legacy_request_builder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/rpc/legacy_request_builder.cpp')
-rw-r--r--src/mongo/rpc/legacy_request_builder.cpp152
1 files changed, 73 insertions, 79 deletions
diff --git a/src/mongo/rpc/legacy_request_builder.cpp b/src/mongo/rpc/legacy_request_builder.cpp
index fc96d738905..05f1fe79ce3 100644
--- a/src/mongo/rpc/legacy_request_builder.cpp
+++ b/src/mongo/rpc/legacy_request_builder.cpp
@@ -41,85 +41,79 @@
namespace mongo {
namespace rpc {
- LegacyRequestBuilder::LegacyRequestBuilder()
- : _message{stdx::make_unique<Message>()}
- {}
-
- LegacyRequestBuilder::~LegacyRequestBuilder()
- {}
-
- LegacyRequestBuilder::LegacyRequestBuilder(std::unique_ptr<Message> message)
- : _message{std::move(message)}
- {}
-
- LegacyRequestBuilder& LegacyRequestBuilder::setDatabase(StringData database) {
- invariant(_state == State::kDatabase);
- _ns = NamespaceString(database, "$cmd").toString();
- _state = State::kCommandName;
- return *this;
- }
-
- LegacyRequestBuilder& LegacyRequestBuilder::setCommandName(StringData commandName) {
- invariant(_state == State::kCommandName);
- // no op, as commandName is the first element of commandArgs
- _state = State::kMetadata;
- return *this;
- }
-
- LegacyRequestBuilder& LegacyRequestBuilder::setMetadata(BSONObj metadata) {
- invariant(_state == State::kMetadata);
- _metadata = std::move(metadata);
- _state = State::kCommandArgs;
- return *this;
- }
-
- LegacyRequestBuilder& LegacyRequestBuilder::setCommandArgs(BSONObj commandArgs) {
- invariant(_state == State::kCommandArgs);
-
- BSONObj legacyCommandArgs;
- int queryOptions;
-
- std::tie(legacyCommandArgs, queryOptions) = uassertStatusOK(
- rpc::downconvertRequestMetadata(std::move(commandArgs),
- std::move(_metadata))
- );
-
- _builder.appendNum(queryOptions); // queryOptions
- _builder.appendStr(_ns);
- _builder.appendNum(0); // nToSkip
- _builder.appendNum(1); // nToReturn
-
- legacyCommandArgs.appendSelfToBufBuilder(_builder);
- _state = State::kInputDocs;
- return *this;
- }
-
- LegacyRequestBuilder& LegacyRequestBuilder::addInputDocs(DocumentRange inputDocs) {
- invariant(_state == State::kInputDocs);
- // no op
- return *this;
- }
-
- LegacyRequestBuilder& LegacyRequestBuilder::addInputDoc(BSONObj inputDoc) {
- invariant(_state == State::kInputDocs);
- // no op
- return *this;
- }
-
- RequestBuilderInterface::State LegacyRequestBuilder::getState() const {
- return _state;
- }
-
- Protocol LegacyRequestBuilder::getProtocol() const {
- return rpc::Protocol::kOpQuery;
- }
-
- std::unique_ptr<Message> LegacyRequestBuilder::done() {
- invariant(_state == State::kInputDocs);
- _message->setData(dbQuery, _builder.buf(), _builder.len());
- _state = State::kDone;
- return std::move(_message);
- }
+LegacyRequestBuilder::LegacyRequestBuilder() : _message{stdx::make_unique<Message>()} {}
+
+LegacyRequestBuilder::~LegacyRequestBuilder() {}
+
+LegacyRequestBuilder::LegacyRequestBuilder(std::unique_ptr<Message> message)
+ : _message{std::move(message)} {}
+
+LegacyRequestBuilder& LegacyRequestBuilder::setDatabase(StringData database) {
+ invariant(_state == State::kDatabase);
+ _ns = NamespaceString(database, "$cmd").toString();
+ _state = State::kCommandName;
+ return *this;
+}
+
+LegacyRequestBuilder& LegacyRequestBuilder::setCommandName(StringData commandName) {
+ invariant(_state == State::kCommandName);
+ // no op, as commandName is the first element of commandArgs
+ _state = State::kMetadata;
+ return *this;
+}
+
+LegacyRequestBuilder& LegacyRequestBuilder::setMetadata(BSONObj metadata) {
+ invariant(_state == State::kMetadata);
+ _metadata = std::move(metadata);
+ _state = State::kCommandArgs;
+ return *this;
+}
+
+LegacyRequestBuilder& LegacyRequestBuilder::setCommandArgs(BSONObj commandArgs) {
+ invariant(_state == State::kCommandArgs);
+
+ BSONObj legacyCommandArgs;
+ int queryOptions;
+
+ std::tie(legacyCommandArgs, queryOptions) = uassertStatusOK(
+ rpc::downconvertRequestMetadata(std::move(commandArgs), std::move(_metadata)));
+
+ _builder.appendNum(queryOptions); // queryOptions
+ _builder.appendStr(_ns);
+ _builder.appendNum(0); // nToSkip
+ _builder.appendNum(1); // nToReturn
+
+ legacyCommandArgs.appendSelfToBufBuilder(_builder);
+ _state = State::kInputDocs;
+ return *this;
+}
+
+LegacyRequestBuilder& LegacyRequestBuilder::addInputDocs(DocumentRange inputDocs) {
+ invariant(_state == State::kInputDocs);
+ // no op
+ return *this;
+}
+
+LegacyRequestBuilder& LegacyRequestBuilder::addInputDoc(BSONObj inputDoc) {
+ invariant(_state == State::kInputDocs);
+ // no op
+ return *this;
+}
+
+RequestBuilderInterface::State LegacyRequestBuilder::getState() const {
+ return _state;
+}
+
+Protocol LegacyRequestBuilder::getProtocol() const {
+ return rpc::Protocol::kOpQuery;
+}
+
+std::unique_ptr<Message> LegacyRequestBuilder::done() {
+ invariant(_state == State::kInputDocs);
+ _message->setData(dbQuery, _builder.buf(), _builder.len());
+ _state = State::kDone;
+ return std::move(_message);
+}
} // namespace rpc
} // namespace mongo