summaryrefslogtreecommitdiff
path: root/src/mongo/db/logical_time.cpp
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2017-08-03 15:54:36 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2017-08-07 13:36:23 -0400
commit3aa21a3194e32eadd1158432f2ed39d4bc931e3f (patch)
treece7fc22d676d550d6eb5de8504c806cb83a3e14b /src/mongo/db/logical_time.cpp
parent53bdf3fa8d2e0e3d6a795d2a13b5f013d8fdfa14 (diff)
downloadmongo-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.cpp24
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;
}