diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2017-08-03 15:54:36 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2017-08-07 13:36:23 -0400 |
commit | 3aa21a3194e32eadd1158432f2ed39d4bc931e3f (patch) | |
tree | ce7fc22d676d550d6eb5de8504c806cb83a3e14b /src/mongo/db/logical_time.cpp | |
parent | 53bdf3fa8d2e0e3d6a795d2a13b5f013d8fdfa14 (diff) | |
download | mongo-3aa21a3194e32eadd1158432f2ed39d4bc931e3f.tar.gz |
SERVER-30147 Move Command::appendOperationTime to LogicalTime
Diffstat (limited to 'src/mongo/db/logical_time.cpp')
-rw-r--r-- | src/mongo/db/logical_time.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/mongo/db/logical_time.cpp b/src/mongo/db/logical_time.cpp index c26d542ec3d..1bb5ce5b62f 100644 --- a/src/mongo/db/logical_time.cpp +++ b/src/mongo/db/logical_time.cpp @@ -26,19 +26,39 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/logical_time.h" #include "mongo/base/data_type_endian.h" #include "mongo/base/data_view.h" -#include "mongo/platform/basic.h" -#include "mongo/util/mongoutils/str.h" +#include "mongo/bson/bsonobj.h" +#include "mongo/bson/bsonobjbuilder.h" namespace mongo { +namespace { + +constexpr auto kOperationTime = "operationTime"_sd; + +} // namespace const LogicalTime LogicalTime::kUninitialized = LogicalTime(); LogicalTime::LogicalTime(Timestamp ts) : _time(ts.asULL()) {} +LogicalTime LogicalTime::fromOperationTime(const BSONObj& obj) { + const auto opTimeElem(obj[kOperationTime]); + uassert(ErrorCodes::FailedToParse, "No operationTime found", !opTimeElem.eoo()); + uassert(ErrorCodes::BadValue, + "Operation time is of the wrong value", + opTimeElem.type() == bsonTimestamp); + return LogicalTime(opTimeElem.timestamp()); +} + +void LogicalTime::appendAsOperationTime(BSONObjBuilder* builder) const { + builder->append(kOperationTime, asTimestamp()); +} + void LogicalTime::addTicks(uint64_t ticks) { _time += ticks; } |