trace_record_result.cc 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
  2. // This source code is licensed under both the GPLv2 (found in the
  3. // COPYING file in the root directory) and Apache 2.0 License
  4. // (found in the LICENSE.Apache file in the root directory).
  5. #include "rocksdb/trace_record_result.h"
  6. namespace ROCKSDB_NAMESPACE {
  7. // TraceRecordResult
  8. TraceRecordResult::TraceRecordResult(TraceType trace_type)
  9. : trace_type_(trace_type) {}
  10. TraceType TraceRecordResult::GetTraceType() const { return trace_type_; }
  11. // TraceExecutionResult
  12. TraceExecutionResult::TraceExecutionResult(uint64_t start_timestamp,
  13. uint64_t end_timestamp,
  14. TraceType trace_type)
  15. : TraceRecordResult(trace_type),
  16. ts_start_(start_timestamp),
  17. ts_end_(end_timestamp) {
  18. assert(ts_start_ <= ts_end_);
  19. }
  20. uint64_t TraceExecutionResult::GetStartTimestamp() const { return ts_start_; }
  21. uint64_t TraceExecutionResult::GetEndTimestamp() const { return ts_end_; }
  22. // StatusOnlyTraceExecutionResult
  23. StatusOnlyTraceExecutionResult::StatusOnlyTraceExecutionResult(
  24. Status status, uint64_t start_timestamp, uint64_t end_timestamp,
  25. TraceType trace_type)
  26. : TraceExecutionResult(start_timestamp, end_timestamp, trace_type),
  27. status_(std::move(status)) {}
  28. const Status& StatusOnlyTraceExecutionResult::GetStatus() const {
  29. return status_;
  30. }
  31. Status StatusOnlyTraceExecutionResult::Accept(Handler* handler) {
  32. assert(handler != nullptr);
  33. return handler->Handle(*this);
  34. }
  35. // SingleValueTraceExecutionResult
  36. SingleValueTraceExecutionResult::SingleValueTraceExecutionResult(
  37. Status status, const std::string& value, uint64_t start_timestamp,
  38. uint64_t end_timestamp, TraceType trace_type)
  39. : TraceExecutionResult(start_timestamp, end_timestamp, trace_type),
  40. status_(std::move(status)),
  41. value_(value) {}
  42. SingleValueTraceExecutionResult::SingleValueTraceExecutionResult(
  43. Status status, std::string&& value, uint64_t start_timestamp,
  44. uint64_t end_timestamp, TraceType trace_type)
  45. : TraceExecutionResult(start_timestamp, end_timestamp, trace_type),
  46. status_(std::move(status)),
  47. value_(std::move(value)) {}
  48. SingleValueTraceExecutionResult::~SingleValueTraceExecutionResult() {
  49. value_.clear();
  50. }
  51. const Status& SingleValueTraceExecutionResult::GetStatus() const {
  52. return status_;
  53. }
  54. const std::string& SingleValueTraceExecutionResult::GetValue() const {
  55. return value_;
  56. }
  57. Status SingleValueTraceExecutionResult::Accept(Handler* handler) {
  58. assert(handler != nullptr);
  59. return handler->Handle(*this);
  60. }
  61. // MultiValuesTraceExecutionResult
  62. MultiValuesTraceExecutionResult::MultiValuesTraceExecutionResult(
  63. std::vector<Status> multi_status, std::vector<std::string> values,
  64. uint64_t start_timestamp, uint64_t end_timestamp, TraceType trace_type)
  65. : TraceExecutionResult(start_timestamp, end_timestamp, trace_type),
  66. multi_status_(std::move(multi_status)),
  67. values_(std::move(values)) {}
  68. MultiValuesTraceExecutionResult::~MultiValuesTraceExecutionResult() {
  69. multi_status_.clear();
  70. values_.clear();
  71. }
  72. const std::vector<Status>& MultiValuesTraceExecutionResult::GetMultiStatus()
  73. const {
  74. return multi_status_;
  75. }
  76. const std::vector<std::string>& MultiValuesTraceExecutionResult::GetValues()
  77. const {
  78. return values_;
  79. }
  80. Status MultiValuesTraceExecutionResult::Accept(Handler* handler) {
  81. assert(handler != nullptr);
  82. return handler->Handle(*this);
  83. }
  84. // IteratorTraceExecutionResult
  85. IteratorTraceExecutionResult::IteratorTraceExecutionResult(
  86. bool valid, Status status, PinnableSlice&& key, PinnableSlice&& value,
  87. uint64_t start_timestamp, uint64_t end_timestamp, TraceType trace_type)
  88. : TraceExecutionResult(start_timestamp, end_timestamp, trace_type),
  89. valid_(valid),
  90. status_(std::move(status)),
  91. key_(std::move(key)),
  92. value_(std::move(value)) {}
  93. IteratorTraceExecutionResult::IteratorTraceExecutionResult(
  94. bool valid, Status status, const std::string& key, const std::string& value,
  95. uint64_t start_timestamp, uint64_t end_timestamp, TraceType trace_type)
  96. : TraceExecutionResult(start_timestamp, end_timestamp, trace_type),
  97. valid_(valid),
  98. status_(std::move(status)) {
  99. key_.PinSelf(key);
  100. value_.PinSelf(value);
  101. }
  102. IteratorTraceExecutionResult::~IteratorTraceExecutionResult() {
  103. key_.clear();
  104. value_.clear();
  105. }
  106. bool IteratorTraceExecutionResult::GetValid() const { return valid_; }
  107. const Status& IteratorTraceExecutionResult::GetStatus() const {
  108. return status_;
  109. }
  110. Slice IteratorTraceExecutionResult::GetKey() const { return Slice(key_); }
  111. Slice IteratorTraceExecutionResult::GetValue() const { return Slice(value_); }
  112. Status IteratorTraceExecutionResult::Accept(Handler* handler) {
  113. assert(handler != nullptr);
  114. return handler->Handle(*this);
  115. }
  116. } // namespace ROCKSDB_NAMESPACE