diff options
author | matt dannenberg <matt.dannenberg@10gen.com> | 2015-08-07 06:36:44 -0400 |
---|---|---|
committer | matt dannenberg <matt.dannenberg@10gen.com> | 2015-08-12 04:22:28 -0400 |
commit | 86a3e6352eb27fd2e6115299bcec5103a830fe36 (patch) | |
tree | 7f7f42491808e8c487e47a710deb445448d18a58 /src/mongo/bson/util/bson_extract.cpp | |
parent | 7bb09c0377f5160857617c38ab07955f8f4b03f6 (diff) | |
download | mongo-86a3e6352eb27fd2e6115299bcec5103a830fe36.tar.gz |
SERVER-19554 merge ReplSetMetadata and ReplicationMetadata
Diffstat (limited to 'src/mongo/bson/util/bson_extract.cpp')
-rw-r--r-- | src/mongo/bson/util/bson_extract.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mongo/bson/util/bson_extract.cpp b/src/mongo/bson/util/bson_extract.cpp index d5b5b83e6da..4906d0897a5 100644 --- a/src/mongo/bson/util/bson_extract.cpp +++ b/src/mongo/bson/util/bson_extract.cpp @@ -32,6 +32,13 @@ namespace mongo { +namespace { + +const char kTermFieldName[] = "term"; +const char kTimestampFieldName[] = "ts"; + +} // namespace + Status bsonExtractField(const BSONObj& object, StringData fieldName, BSONElement* outElement) { BSONElement element = object.getField(fieldName); if (element.eoo()) @@ -98,6 +105,25 @@ Status bsonExtractStringField(const BSONObj& object, StringData fieldName, std:: return Status::OK(); } +Status bsonExtractOpTimeField(const BSONObj& object, StringData fieldName, repl::OpTime* out) { + BSONElement element; + Status status = bsonExtractTypedField(object, fieldName, Object, &element); + if (!status.isOK()) + return status; + + BSONObj opTimeObj = element.Obj(); + Timestamp ts; + status = bsonExtractTimestampField(opTimeObj, kTimestampFieldName, &ts); + if (!status.isOK()) + return status; + long long term; + status = bsonExtractIntegerField(opTimeObj, kTermFieldName, &term); + if (!status.isOK()) + return status; + *out = repl::OpTime(ts, term); + return Status::OK(); +} + Status bsonExtractTimestampField(const BSONObj& object, StringData fieldName, Timestamp* out) { BSONElement element; Status status = bsonExtractTypedField(object, fieldName, bsonTimestamp, &element); |