summaryrefslogtreecommitdiff
path: root/src/mongo/s/type_mongos.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/s/type_mongos.h')
-rw-r--r--src/mongo/s/type_mongos.h404
1 files changed, 212 insertions, 192 deletions
diff --git a/src/mongo/s/type_mongos.h b/src/mongo/s/type_mongos.h
index 9969fca4815..2bf0a372359 100644
--- a/src/mongo/s/type_mongos.h
+++ b/src/mongo/s/type_mongos.h
@@ -36,208 +36,228 @@
namespace mongo {
- /**
- * This class represents the layout and contents of documents contained in the
- * config.mongos collection. All manipulation of documents coming from that
- * collection should be done with this class.
- *
- * Usage Example:
- *
- * // Contact the config. 'conn' has been obtained before.
- * DBClientBase* conn;
- * BSONObj query = QUERY(MongosType::exampleField("exampleFieldName"));
- * exampleDoc = conn->findOne(MongosType::ConfigNS, query);
- *
- * // Process the response.
- * MongosType exampleType;
- * std::string errMsg;
- * if (!exampleType.parseBSON(exampleDoc, &errMsg) || !exampleType.isValid(&errMsg)) {
- * // Can't use 'exampleType'. Take action.
- * }
- * // use 'exampleType'
- *
- */
- class MongosType {
- MONGO_DISALLOW_COPYING(MongosType);
- public:
-
- //
- // schema declarations
- //
-
- // Name of the mongos collection in the config server.
- static const std::string ConfigNS;
-
- // Field names and types in the mongos collection type.
- static const BSONField<std::string> name;
- static const BSONField<Date_t> ping;
- static const BSONField<int> up;
- static const BSONField<bool> waiting;
- static const BSONField<std::string> mongoVersion;
- static const BSONField<int> configVersion;
-
- //
- // mongos type methods
- //
-
- MongosType();
- ~MongosType();
-
- /**
- * Returns true if all the mandatory fields are present and have valid
- * representations. Otherwise returns false and fills in the optional 'errMsg' string.
- */
- bool isValid(std::string* errMsg) const;
-
- /**
- * Returns the BSON representation of the entry.
- */
- BSONObj toBSON() const;
-
- /**
- * Clears and populates the internal state using the 'source' BSON object if the
- * latter contains valid values. Otherwise sets errMsg and returns false.
- */
- bool parseBSON(const BSONObj& source, std::string* errMsg);
-
- /**
- * Clears the internal state.
- */
- void clear();
-
- /**
- * Copies all the fields present in 'this' to 'other'.
- */
- void cloneTo(MongosType* other) const;
-
- /**
- * Returns a std::string representation of the current internal state.
- */
- std::string toString() const;
-
- //
- // individual field accessors
- //
-
- // Mandatory Fields
- void setName(StringData name) {
- _name = name.toString();
- _isNameSet = true;
- }
-
- void unsetName() { _isNameSet = false; }
-
- bool isNameSet() const { return _isNameSet; }
-
- // Calling get*() methods when the member is not set results in undefined behavior
- const std::string& getName() const {
- dassert(_isNameSet);
- return _name;
- }
-
- void setPing(const Date_t ping) {
- _ping = ping;
- _isPingSet = true;
- }
-
- void unsetPing() { _isPingSet = false; }
-
- bool isPingSet() const { return _isPingSet; }
-
- // Calling get*() methods when the member is not set results in undefined behavior
- const Date_t getPing() const {
- dassert(_isPingSet);
- return _ping;
- }
-
- void setUp(const int up) {
- _up = up;
- _isUpSet = true;
- }
-
- void unsetUp() { _isUpSet = false; }
-
- bool isUpSet() const { return _isUpSet; }
+/**
+ * This class represents the layout and contents of documents contained in the
+ * config.mongos collection. All manipulation of documents coming from that
+ * collection should be done with this class.
+ *
+ * Usage Example:
+ *
+ * // Contact the config. 'conn' has been obtained before.
+ * DBClientBase* conn;
+ * BSONObj query = QUERY(MongosType::exampleField("exampleFieldName"));
+ * exampleDoc = conn->findOne(MongosType::ConfigNS, query);
+ *
+ * // Process the response.
+ * MongosType exampleType;
+ * std::string errMsg;
+ * if (!exampleType.parseBSON(exampleDoc, &errMsg) || !exampleType.isValid(&errMsg)) {
+ * // Can't use 'exampleType'. Take action.
+ * }
+ * // use 'exampleType'
+ *
+ */
+class MongosType {
+ MONGO_DISALLOW_COPYING(MongosType);
- // Calling get*() methods when the member is not set results in undefined behavior
- int getUp() const {
- dassert(_isUpSet);
- return _up;
- }
+public:
+ //
+ // schema declarations
+ //
- void setWaiting(const bool waiting) {
- _waiting = waiting;
- _isWaitingSet = true;
- }
+ // Name of the mongos collection in the config server.
+ static const std::string ConfigNS;
- void unsetWaiting() { _isWaitingSet = false; }
+ // Field names and types in the mongos collection type.
+ static const BSONField<std::string> name;
+ static const BSONField<Date_t> ping;
+ static const BSONField<int> up;
+ static const BSONField<bool> waiting;
+ static const BSONField<std::string> mongoVersion;
+ static const BSONField<int> configVersion;
- bool isWaitingSet() const { return _isWaitingSet; }
+ //
+ // mongos type methods
+ //
- // Calling get*() methods when the member is not set results in undefined behavior
- bool getWaiting() const {
- dassert(_isWaitingSet);
- return _waiting;
- }
+ MongosType();
+ ~MongosType();
- // Optional Fields
- void setMongoVersion(StringData mongoVersion) {
- _mongoVersion = mongoVersion.toString();
- _isMongoVersionSet = true;
- }
+ /**
+ * Returns true if all the mandatory fields are present and have valid
+ * representations. Otherwise returns false and fills in the optional 'errMsg' string.
+ */
+ bool isValid(std::string* errMsg) const;
- void unsetMongoVersion() { _isMongoVersionSet = false; }
+ /**
+ * Returns the BSON representation of the entry.
+ */
+ BSONObj toBSON() const;
- bool isMongoVersionSet() const {
- return _isMongoVersionSet || mongoVersion.hasDefault();
- }
+ /**
+ * Clears and populates the internal state using the 'source' BSON object if the
+ * latter contains valid values. Otherwise sets errMsg and returns false.
+ */
+ bool parseBSON(const BSONObj& source, std::string* errMsg);
- // Calling get*() methods when the member is not set and has no default results in undefined
- // behavior
- std::string getMongoVersion() const {
- if (_isMongoVersionSet) {
- return _mongoVersion;
- } else {
- dassert(mongoVersion.hasDefault());
- return mongoVersion.getDefault();
- }
- }
- void setConfigVersion(const int configVersion) {
- _configVersion = configVersion;
- _isConfigVersionSet = true;
- }
+ /**
+ * Clears the internal state.
+ */
+ void clear();
- void unsetConfigVersion() { _isConfigVersionSet = false; }
+ /**
+ * Copies all the fields present in 'this' to 'other'.
+ */
+ void cloneTo(MongosType* other) const;
- bool isConfigVersionSet() const {
- return _isConfigVersionSet || configVersion.hasDefault();
+ /**
+ * Returns a std::string representation of the current internal state.
+ */
+ std::string toString() const;
+
+ //
+ // individual field accessors
+ //
+
+ // Mandatory Fields
+ void setName(StringData name) {
+ _name = name.toString();
+ _isNameSet = true;
+ }
+
+ void unsetName() {
+ _isNameSet = false;
+ }
+
+ bool isNameSet() const {
+ return _isNameSet;
+ }
+
+ // Calling get*() methods when the member is not set results in undefined behavior
+ const std::string& getName() const {
+ dassert(_isNameSet);
+ return _name;
+ }
+
+ void setPing(const Date_t ping) {
+ _ping = ping;
+ _isPingSet = true;
+ }
+
+ void unsetPing() {
+ _isPingSet = false;
+ }
+
+ bool isPingSet() const {
+ return _isPingSet;
+ }
+
+ // Calling get*() methods when the member is not set results in undefined behavior
+ const Date_t getPing() const {
+ dassert(_isPingSet);
+ return _ping;
+ }
+
+ void setUp(const int up) {
+ _up = up;
+ _isUpSet = true;
+ }
+
+ void unsetUp() {
+ _isUpSet = false;
+ }
+
+ bool isUpSet() const {
+ return _isUpSet;
+ }
+
+ // Calling get*() methods when the member is not set results in undefined behavior
+ int getUp() const {
+ dassert(_isUpSet);
+ return _up;
+ }
+
+ void setWaiting(const bool waiting) {
+ _waiting = waiting;
+ _isWaitingSet = true;
+ }
+
+ void unsetWaiting() {
+ _isWaitingSet = false;
+ }
+
+ bool isWaitingSet() const {
+ return _isWaitingSet;
+ }
+
+ // Calling get*() methods when the member is not set results in undefined behavior
+ bool getWaiting() const {
+ dassert(_isWaitingSet);
+ return _waiting;
+ }
+
+ // Optional Fields
+ void setMongoVersion(StringData mongoVersion) {
+ _mongoVersion = mongoVersion.toString();
+ _isMongoVersionSet = true;
+ }
+
+ void unsetMongoVersion() {
+ _isMongoVersionSet = false;
+ }
+
+ bool isMongoVersionSet() const {
+ return _isMongoVersionSet || mongoVersion.hasDefault();
+ }
+
+ // Calling get*() methods when the member is not set and has no default results in undefined
+ // behavior
+ std::string getMongoVersion() const {
+ if (_isMongoVersionSet) {
+ return _mongoVersion;
+ } else {
+ dassert(mongoVersion.hasDefault());
+ return mongoVersion.getDefault();
}
-
- // Calling get*() methods when the member is not set and has no default results in undefined
- // behavior
- int getConfigVersion() const {
- if (_isConfigVersionSet) {
- return _configVersion;
- } else {
- dassert(configVersion.hasDefault());
- return configVersion.getDefault();
- }
+ }
+ void setConfigVersion(const int configVersion) {
+ _configVersion = configVersion;
+ _isConfigVersionSet = true;
+ }
+
+ void unsetConfigVersion() {
+ _isConfigVersionSet = false;
+ }
+
+ bool isConfigVersionSet() const {
+ return _isConfigVersionSet || configVersion.hasDefault();
+ }
+
+ // Calling get*() methods when the member is not set and has no default results in undefined
+ // behavior
+ int getConfigVersion() const {
+ if (_isConfigVersionSet) {
+ return _configVersion;
+ } else {
+ dassert(configVersion.hasDefault());
+ return configVersion.getDefault();
}
-
- private:
- // Convention: (M)andatory, (O)ptional, (S)pecial rule.
- std::string _name; // (M) "host:port" for this mongos
- bool _isNameSet;
- Date_t _ping; // (M) last time it was seen alive
- bool _isPingSet;
- int _up; // (M) uptime at the last ping
- bool _isUpSet;
- bool _waiting; // (M) for testing purposes
- bool _isWaitingSet;
- std::string _mongoVersion; // (O) the mongodb version of the pinging mongos
- bool _isMongoVersionSet;
- int _configVersion; // (O) the config version of the pinging mongos
- bool _isConfigVersionSet;
- };
-
-} // namespace mongo
+ }
+
+private:
+ // Convention: (M)andatory, (O)ptional, (S)pecial rule.
+ std::string _name; // (M) "host:port" for this mongos
+ bool _isNameSet;
+ Date_t _ping; // (M) last time it was seen alive
+ bool _isPingSet;
+ int _up; // (M) uptime at the last ping
+ bool _isUpSet;
+ bool _waiting; // (M) for testing purposes
+ bool _isWaitingSet;
+ std::string _mongoVersion; // (O) the mongodb version of the pinging mongos
+ bool _isMongoVersionSet;
+ int _configVersion; // (O) the config version of the pinging mongos
+ bool _isConfigVersionSet;
+};
+
+} // namespace mongo