diff options
Diffstat (limited to 'src/mongo/s/write_ops/batched_update_request.h')
-rw-r--r-- | src/mongo/s/write_ops/batched_update_request.h | 226 |
1 files changed, 115 insertions, 111 deletions
diff --git a/src/mongo/s/write_ops/batched_update_request.h b/src/mongo/s/write_ops/batched_update_request.h index db99188b7b3..6042f4c6cf2 100644 --- a/src/mongo/s/write_ops/batched_update_request.h +++ b/src/mongo/s/write_ops/batched_update_request.h @@ -40,116 +40,120 @@ namespace mongo { +/** + * This class represents the layout and content of a batched update runCommand, + * the request side. + */ +class BatchedUpdateRequest : public BSONSerializable { + MONGO_DISALLOW_COPYING(BatchedUpdateRequest); + +public: + // + // schema declarations + // + + // Name used for the batched update invocation. + static const std::string BATCHED_UPDATE_REQUEST; + + // Field names and types in the batched update command type. + static const BSONField<std::string> collName; + static const BSONField<std::vector<BatchedUpdateDocument*>> updates; + static const BSONField<BSONObj> writeConcern; + static const BSONField<bool> ordered; + static const BSONField<BSONObj> metadata; + + // + // construction / destruction + // + + BatchedUpdateRequest(); + virtual ~BatchedUpdateRequest(); + + /** Copies all the fields present in 'this' to 'other'. */ + void cloneTo(BatchedUpdateRequest* other) const; + + // + // bson serializable interface implementation + // + + virtual bool isValid(std::string* errMsg) const; + virtual BSONObj toBSON() const; + virtual bool parseBSON(const BSONObj& source, std::string* errMsg); + virtual void clear(); + virtual std::string toString() const; + + // + // individual field accessors + // + + void setCollName(StringData collName); + void setCollNameNS(const NamespaceString& collName); + const std::string& getCollName() const; + const NamespaceString& getCollNameNS() const; + + const NamespaceString& getTargetingNSS() const; + + void setUpdates(const std::vector<BatchedUpdateDocument*>& updates); + /** - * This class represents the layout and content of a batched update runCommand, - * the request side. + * updates ownership is transferred to here. */ - class BatchedUpdateRequest : public BSONSerializable { - MONGO_DISALLOW_COPYING(BatchedUpdateRequest); - public: - - // - // schema declarations - // - - // Name used for the batched update invocation. - static const std::string BATCHED_UPDATE_REQUEST; - - // Field names and types in the batched update command type. - static const BSONField<std::string> collName; - static const BSONField<std::vector<BatchedUpdateDocument*> > updates; - static const BSONField<BSONObj> writeConcern; - static const BSONField<bool> ordered; - static const BSONField<BSONObj> metadata; - - // - // construction / destruction - // - - BatchedUpdateRequest(); - virtual ~BatchedUpdateRequest(); - - /** Copies all the fields present in 'this' to 'other'. */ - void cloneTo(BatchedUpdateRequest* other) const; - - // - // bson serializable interface implementation - // - - virtual bool isValid(std::string* errMsg) const; - virtual BSONObj toBSON() const; - virtual bool parseBSON(const BSONObj& source, std::string* errMsg); - virtual void clear(); - virtual std::string toString() const; - - // - // individual field accessors - // - - void setCollName(StringData collName); - void setCollNameNS(const NamespaceString& collName); - const std::string& getCollName() const; - const NamespaceString& getCollNameNS() const; - - const NamespaceString& getTargetingNSS() const; - - void setUpdates(const std::vector<BatchedUpdateDocument*>& updates); - - /** - * updates ownership is transferred to here. - */ - void addToUpdates(BatchedUpdateDocument* updates); - void unsetUpdates(); - bool isUpdatesSet() const; - std::size_t sizeUpdates() const; - const std::vector<BatchedUpdateDocument*>& getUpdates() const; - const BatchedUpdateDocument* getUpdatesAt(std::size_t pos) const; - - void setWriteConcern(const BSONObj& writeConcern); - void unsetWriteConcern(); - bool isWriteConcernSet() const; - const BSONObj& getWriteConcern() const; - - void setOrdered(bool ordered); - void unsetOrdered(); - bool isOrderedSet() const; - bool getOrdered() const; - - void setShouldBypassValidation(bool newVal) { _shouldBypassValidation = newVal; } - bool shouldBypassValidation() const { return _shouldBypassValidation; } - - /* - * metadata ownership will be transferred to this. - */ - void setMetadata(BatchedRequestMetadata* metadata); - void unsetMetadata(); - bool isMetadataSet() const; - BatchedRequestMetadata* getMetadata() const; - - private: - // Convention: (M)andatory, (O)ptional - - // (M) collection we're updating from - NamespaceString _collName; - bool _isCollNameSet; - - // (M) array of individual updates - std::vector<BatchedUpdateDocument*> _updates; - bool _isUpdatesSet; - - // (O) to be issued after the batch applied - BSONObj _writeConcern; - bool _isWriteConcernSet; - - // (O) whether batch is issued in parallel or not - bool _ordered; - bool _isOrderedSet; - - // (O) should document validation be bypassed (default false) - bool _shouldBypassValidation; - - // (O) metadata associated with this request for internal use. - std::unique_ptr<BatchedRequestMetadata> _metadata; - }; - -} // namespace mongo + void addToUpdates(BatchedUpdateDocument* updates); + void unsetUpdates(); + bool isUpdatesSet() const; + std::size_t sizeUpdates() const; + const std::vector<BatchedUpdateDocument*>& getUpdates() const; + const BatchedUpdateDocument* getUpdatesAt(std::size_t pos) const; + + void setWriteConcern(const BSONObj& writeConcern); + void unsetWriteConcern(); + bool isWriteConcernSet() const; + const BSONObj& getWriteConcern() const; + + void setOrdered(bool ordered); + void unsetOrdered(); + bool isOrderedSet() const; + bool getOrdered() const; + + void setShouldBypassValidation(bool newVal) { + _shouldBypassValidation = newVal; + } + bool shouldBypassValidation() const { + return _shouldBypassValidation; + } + + /* + * metadata ownership will be transferred to this. + */ + void setMetadata(BatchedRequestMetadata* metadata); + void unsetMetadata(); + bool isMetadataSet() const; + BatchedRequestMetadata* getMetadata() const; + +private: + // Convention: (M)andatory, (O)ptional + + // (M) collection we're updating from + NamespaceString _collName; + bool _isCollNameSet; + + // (M) array of individual updates + std::vector<BatchedUpdateDocument*> _updates; + bool _isUpdatesSet; + + // (O) to be issued after the batch applied + BSONObj _writeConcern; + bool _isWriteConcernSet; + + // (O) whether batch is issued in parallel or not + bool _ordered; + bool _isOrderedSet; + + // (O) should document validation be bypassed (default false) + bool _shouldBypassValidation; + + // (O) metadata associated with this request for internal use. + std::unique_ptr<BatchedRequestMetadata> _metadata; +}; + +} // namespace mongo |