summaryrefslogtreecommitdiff
path: root/src/mongo/rpc/request_builder_interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/rpc/request_builder_interface.h')
-rw-r--r--src/mongo/rpc/request_builder_interface.h155
1 files changed, 74 insertions, 81 deletions
diff --git a/src/mongo/rpc/request_builder_interface.h b/src/mongo/rpc/request_builder_interface.h
index 7297bf393c5..f27c7e3e10d 100644
--- a/src/mongo/rpc/request_builder_interface.h
+++ b/src/mongo/rpc/request_builder_interface.h
@@ -34,92 +34,85 @@
#include "mongo/rpc/protocol.h"
namespace mongo {
- class Message;
- class BSONObj;
- class StringData;
+class Message;
+class BSONObj;
+class StringData;
namespace rpc {
- class DocumentRange;
+class DocumentRange;
+
+/**
+ * Constructs an RPC request.
+ */
+class RequestBuilderInterface {
+ MONGO_DISALLOW_COPYING(RequestBuilderInterface);
+
+public:
+ /**
+ * Request builders must have their fields set in order as they are immediately written into
+ * the underlying message buffer. This enum represents the next field that can be written
+ * into the builder. Note that when the builder is in state 'kInputDocs', multiple input
+ * docs can be added. After the builder's done() method is called it is in state 'kDone',
+ * and no further methods can be called.
+ */
+ enum class State { kDatabase, kCommandName, kMetadata, kCommandArgs, kInputDocs, kDone };
+
+ virtual ~RequestBuilderInterface() = default;
+
+ /**
+ * Sets the database that the command will be executed against.
+ */
+ virtual RequestBuilderInterface& setDatabase(StringData database) = 0;
+
+ /**
+ * Sets the name of the command to execute.
+ */
+ virtual RequestBuilderInterface& setCommandName(StringData commandName) = 0;
+
+ /**
+ * Sets the metadata associated with this command request - see metadata.h for details.
+ */
+ virtual RequestBuilderInterface& setMetadata(BSONObj metadata) = 0;
/**
- * Constructs an RPC request.
+ * Sets the arguments to pass to the command.
*/
- class RequestBuilderInterface {
- MONGO_DISALLOW_COPYING(RequestBuilderInterface);
- public:
-
- /**
- * Request builders must have their fields set in order as they are immediately written into
- * the underlying message buffer. This enum represents the next field that can be written
- * into the builder. Note that when the builder is in state 'kInputDocs', multiple input
- * docs can be added. After the builder's done() method is called it is in state 'kDone',
- * and no further methods can be called.
- */
- enum class State {
- kDatabase,
- kCommandName,
- kMetadata,
- kCommandArgs,
- kInputDocs,
- kDone
- };
-
- virtual ~RequestBuilderInterface() = default;
-
- /**
- * Sets the database that the command will be executed against.
- */
- virtual RequestBuilderInterface& setDatabase(StringData database) = 0;
-
- /**
- * Sets the name of the command to execute.
- */
- virtual RequestBuilderInterface& setCommandName(StringData commandName) = 0;
-
- /**
- * Sets the metadata associated with this command request - see metadata.h for details.
- */
- virtual RequestBuilderInterface& setMetadata(BSONObj metadata) = 0;
-
- /**
- * Sets the arguments to pass to the command.
- */
- virtual RequestBuilderInterface& setCommandArgs(BSONObj commandArgs) = 0;
-
- /**
- * Add a range of input documents to the request. This method can be called multiple times
- * before calling done().
- */
- virtual RequestBuilderInterface& addInputDocs(DocumentRange inputDocs) = 0;
-
- /**
- * Add a single output document to the request. This method can be called multiple times
- * before calling done().
- */
- virtual RequestBuilderInterface& addInputDoc(BSONObj inputDoc) = 0;
-
- /**
- * Get the state of the builder. This method is intended to enable debug or invariant
- * checks that the builder is in the correct state.
- */
- virtual State getState() const = 0;
-
- /**
- * Gets the protocol used to serialize this request. This should only be used for asserts,
- * and not for runtime behavior changes, which should be handled with polymorphism.
- */
- virtual Protocol getProtocol() const = 0;
-
- /**
- * Writes data then transfers ownership of the message to the caller.
- * The behavior of calling any methods on the object is subsequently
- * undefined.
- */
- virtual std::unique_ptr<Message> done() = 0;
-
- protected:
- RequestBuilderInterface() = default;
- };
+ virtual RequestBuilderInterface& setCommandArgs(BSONObj commandArgs) = 0;
+
+ /**
+ * Add a range of input documents to the request. This method can be called multiple times
+ * before calling done().
+ */
+ virtual RequestBuilderInterface& addInputDocs(DocumentRange inputDocs) = 0;
+
+ /**
+ * Add a single output document to the request. This method can be called multiple times
+ * before calling done().
+ */
+ virtual RequestBuilderInterface& addInputDoc(BSONObj inputDoc) = 0;
+
+ /**
+ * Get the state of the builder. This method is intended to enable debug or invariant
+ * checks that the builder is in the correct state.
+ */
+ virtual State getState() const = 0;
+
+ /**
+ * Gets the protocol used to serialize this request. This should only be used for asserts,
+ * and not for runtime behavior changes, which should be handled with polymorphism.
+ */
+ virtual Protocol getProtocol() const = 0;
+
+ /**
+ * Writes data then transfers ownership of the message to the caller.
+ * The behavior of calling any methods on the object is subsequently
+ * undefined.
+ */
+ virtual std::unique_ptr<Message> done() = 0;
+
+protected:
+ RequestBuilderInterface() = default;
+};
} // namespace rpc
} // namespace mongo