trace_record_handler.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. #pragma once
  6. #include <memory>
  7. #include <unordered_map>
  8. #include <vector>
  9. #include "rocksdb/db.h"
  10. #include "rocksdb/options.h"
  11. #include "rocksdb/status.h"
  12. #include "rocksdb/system_clock.h"
  13. #include "rocksdb/trace_record.h"
  14. namespace ROCKSDB_NAMESPACE {
  15. // Handler to execute TraceRecord.
  16. class TraceExecutionHandler : public TraceRecord::Handler {
  17. public:
  18. TraceExecutionHandler(DB* db,
  19. const std::vector<ColumnFamilyHandle*>& handles);
  20. ~TraceExecutionHandler() override;
  21. Status Handle(const WriteQueryTraceRecord& record,
  22. std::unique_ptr<TraceRecordResult>* result) override;
  23. Status Handle(const GetQueryTraceRecord& record,
  24. std::unique_ptr<TraceRecordResult>* result) override;
  25. Status Handle(const IteratorSeekQueryTraceRecord& record,
  26. std::unique_ptr<TraceRecordResult>* result) override;
  27. Status Handle(const MultiGetQueryTraceRecord& record,
  28. std::unique_ptr<TraceRecordResult>* result) override;
  29. private:
  30. DB* db_;
  31. std::unordered_map<uint32_t, ColumnFamilyHandle*> cf_map_;
  32. WriteOptions write_opts_;
  33. ReadOptions read_opts_;
  34. SystemClock* clock_;
  35. };
  36. // To do: Handler for trace_analyzer.
  37. } // namespace ROCKSDB_NAMESPACE