cache_dump_load.cc 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright (c) Facebook, Inc. and its affiliates. 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/utilities/cache_dump_load.h"
  6. #include "file/writable_file_writer.h"
  7. #include "port/lang.h"
  8. #include "rocksdb/env.h"
  9. #include "rocksdb/file_system.h"
  10. #include "table/format.h"
  11. #include "util/crc32c.h"
  12. #include "utilities/cache_dump_load_impl.h"
  13. namespace ROCKSDB_NAMESPACE {
  14. IOStatus NewToFileCacheDumpWriter(const std::shared_ptr<FileSystem>& fs,
  15. const FileOptions& file_opts,
  16. const std::string& file_name,
  17. std::unique_ptr<CacheDumpWriter>* writer) {
  18. std::unique_ptr<WritableFileWriter> file_writer;
  19. IOStatus io_s = WritableFileWriter::Create(fs, file_name, file_opts,
  20. &file_writer, nullptr);
  21. if (!io_s.ok()) {
  22. return io_s;
  23. }
  24. writer->reset(new ToFileCacheDumpWriter(std::move(file_writer)));
  25. return io_s;
  26. }
  27. IOStatus NewFromFileCacheDumpReader(const std::shared_ptr<FileSystem>& fs,
  28. const FileOptions& file_opts,
  29. const std::string& file_name,
  30. std::unique_ptr<CacheDumpReader>* reader) {
  31. std::unique_ptr<RandomAccessFileReader> file_reader;
  32. IOStatus io_s = RandomAccessFileReader::Create(fs, file_name, file_opts,
  33. &file_reader, nullptr);
  34. if (!io_s.ok()) {
  35. return io_s;
  36. }
  37. reader->reset(new FromFileCacheDumpReader(std::move(file_reader)));
  38. return io_s;
  39. }
  40. Status NewDefaultCacheDumper(const CacheDumpOptions& dump_options,
  41. const std::shared_ptr<Cache>& cache,
  42. std::unique_ptr<CacheDumpWriter>&& writer,
  43. std::unique_ptr<CacheDumper>* cache_dumper) {
  44. cache_dumper->reset(
  45. new CacheDumperImpl(dump_options, cache, std::move(writer)));
  46. return Status::OK();
  47. }
  48. Status NewDefaultCacheDumpedLoader(
  49. const CacheDumpOptions& dump_options,
  50. const BlockBasedTableOptions& toptions,
  51. const std::shared_ptr<SecondaryCache>& secondary_cache,
  52. std::unique_ptr<CacheDumpReader>&& reader,
  53. std::unique_ptr<CacheDumpedLoader>* cache_dump_loader) {
  54. cache_dump_loader->reset(new CacheDumpedLoaderImpl(
  55. dump_options, toptions, secondary_cache, std::move(reader)));
  56. return Status::OK();
  57. }
  58. } // namespace ROCKSDB_NAMESPACE