@nxtedition/rocksdb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1088) hide show
  1. package/CHANGELOG.md +294 -0
  2. package/LICENSE +21 -0
  3. package/README.md +102 -0
  4. package/UPGRADING.md +91 -0
  5. package/binding.cc +1276 -0
  6. package/binding.gyp +73 -0
  7. package/binding.js +1 -0
  8. package/chained-batch.js +44 -0
  9. package/deps/rocksdb/build_version.cc +4 -0
  10. package/deps/rocksdb/rocksdb/CMakeLists.txt +1356 -0
  11. package/deps/rocksdb/rocksdb/COPYING +339 -0
  12. package/deps/rocksdb/rocksdb/LICENSE.Apache +202 -0
  13. package/deps/rocksdb/rocksdb/LICENSE.leveldb +29 -0
  14. package/deps/rocksdb/rocksdb/Makefile +2521 -0
  15. package/deps/rocksdb/rocksdb/TARGETS +2100 -0
  16. package/deps/rocksdb/rocksdb/cache/cache.cc +63 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +381 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +114 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_test.cc +775 -0
  20. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +769 -0
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.h +16 -0
  22. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +574 -0
  23. package/deps/rocksdb/rocksdb/cache/lru_cache.h +339 -0
  24. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +199 -0
  25. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +162 -0
  26. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +111 -0
  27. package/deps/rocksdb/rocksdb/cmake/RocksDBConfig.cmake.in +54 -0
  28. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  29. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  30. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  31. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  32. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  33. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  34. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  35. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  36. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  37. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +108 -0
  38. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +115 -0
  39. package/deps/rocksdb/rocksdb/db/blob/blob_constants.h +16 -0
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +154 -0
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.h +67 -0
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +206 -0
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +316 -0
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +91 -0
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +660 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +99 -0
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +49 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +268 -0
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.cc +134 -0
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.h +57 -0
  51. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +173 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +55 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +164 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +423 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +81 -0
  56. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +771 -0
  57. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +184 -0
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.cc +145 -0
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +148 -0
  60. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +132 -0
  61. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +76 -0
  62. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +168 -0
  63. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +83 -0
  64. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +307 -0
  65. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +464 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +358 -0
  67. package/deps/rocksdb/rocksdb/db/builder.h +95 -0
  68. package/deps/rocksdb/rocksdb/db/c.cc +5281 -0
  69. package/deps/rocksdb/rocksdb/db/c_test.c +2883 -0
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +1602 -0
  71. package/deps/rocksdb/rocksdb/db/column_family.h +787 -0
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +3427 -0
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +425 -0
  74. package/deps/rocksdb/rocksdb/db/compacted_db_impl.cc +169 -0
  75. package/deps/rocksdb/rocksdb/db/compacted_db_impl.h +118 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +591 -0
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +389 -0
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +37 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +1023 -0
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +353 -0
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1254 -0
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1917 -0
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +208 -0
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +1037 -0
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +1224 -0
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1135 -0
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +318 -0
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +255 -0
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +57 -0
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +510 -0
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +33 -0
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +2190 -0
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1103 -0
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +32 -0
  95. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +44 -0
  96. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +660 -0
  97. package/deps/rocksdb/rocksdb/db/convenience.cc +78 -0
  98. package/deps/rocksdb/rocksdb/db/corruption_test.cc +921 -0
  99. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +359 -0
  100. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +3820 -0
  101. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1058 -0
  102. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +2128 -0
  103. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +851 -0
  104. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +6292 -0
  105. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +509 -0
  106. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +130 -0
  107. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +137 -0
  108. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1119 -0
  109. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5057 -0
  110. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +2274 -0
  111. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +3421 -0
  112. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +298 -0
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +151 -0
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +967 -0
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1806 -0
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +270 -0
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +146 -0
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +683 -0
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +333 -0
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2024 -0
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_secondary_test.cc +932 -0
  122. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +137 -0
  123. package/deps/rocksdb/rocksdb/db/db_info_dumper.h +15 -0
  124. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +178 -0
  125. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +592 -0
  126. package/deps/rocksdb/rocksdb/db/db_iter.cc +1493 -0
  127. package/deps/rocksdb/rocksdb/db/db_iter.h +390 -0
  128. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +657 -0
  129. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +3268 -0
  130. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +3197 -0
  131. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +299 -0
  132. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +513 -0
  133. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +329 -0
  134. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +241 -0
  135. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +671 -0
  136. package/deps/rocksdb/rocksdb/db/db_options_test.cc +1022 -0
  137. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1723 -0
  138. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1694 -0
  139. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1261 -0
  140. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +164 -0
  141. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +488 -0
  142. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +567 -0
  143. package/deps/rocksdb/rocksdb/db/db_test.cc +6736 -0
  144. package/deps/rocksdb/rocksdb/db/db_test2.cc +5408 -0
  145. package/deps/rocksdb/rocksdb/db/db_test_util.cc +1633 -0
  146. package/deps/rocksdb/rocksdb/db/db_test_util.h +1194 -0
  147. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +2235 -0
  148. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +1780 -0
  149. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +2520 -0
  150. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +119 -0
  151. package/deps/rocksdb/rocksdb/db/db_write_test.cc +465 -0
  152. package/deps/rocksdb/rocksdb/db/dbformat.cc +222 -0
  153. package/deps/rocksdb/rocksdb/db/dbformat.h +786 -0
  154. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +206 -0
  155. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +580 -0
  156. package/deps/rocksdb/rocksdb/db/error_handler.cc +726 -0
  157. package/deps/rocksdb/rocksdb/db/error_handler.h +117 -0
  158. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +2598 -0
  159. package/deps/rocksdb/rocksdb/db/event_helpers.cc +233 -0
  160. package/deps/rocksdb/rocksdb/db/event_helpers.h +57 -0
  161. package/deps/rocksdb/rocksdb/db/experimental.cc +50 -0
  162. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1559 -0
  163. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +910 -0
  164. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +195 -0
  165. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +2936 -0
  166. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +556 -0
  167. package/deps/rocksdb/rocksdb/db/file_indexer.cc +216 -0
  168. package/deps/rocksdb/rocksdb/db/file_indexer.h +142 -0
  169. package/deps/rocksdb/rocksdb/db/file_indexer_test.cc +350 -0
  170. package/deps/rocksdb/rocksdb/db/filename_test.cc +179 -0
  171. package/deps/rocksdb/rocksdb/db/flush_job.cc +514 -0
  172. package/deps/rocksdb/rocksdb/db/flush_job.h +169 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +647 -0
  174. package/deps/rocksdb/rocksdb/db/flush_scheduler.cc +86 -0
  175. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +54 -0
  176. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1023 -0
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.h +163 -0
  178. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +377 -0
  179. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +282 -0
  180. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +75 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +632 -0
  182. package/deps/rocksdb/rocksdb/db/internal_stats.cc +1461 -0
  183. package/deps/rocksdb/rocksdb/db/internal_stats.h +712 -0
  184. package/deps/rocksdb/rocksdb/db/job_context.h +226 -0
  185. package/deps/rocksdb/rocksdb/db/listener_test.cc +1118 -0
  186. package/deps/rocksdb/rocksdb/db/log_format.h +48 -0
  187. package/deps/rocksdb/rocksdb/db/log_reader.cc +654 -0
  188. package/deps/rocksdb/rocksdb/db/log_reader.h +192 -0
  189. package/deps/rocksdb/rocksdb/db/log_test.cc +901 -0
  190. package/deps/rocksdb/rocksdb/db/log_writer.cc +164 -0
  191. package/deps/rocksdb/rocksdb/db/log_writer.h +115 -0
  192. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.cc +67 -0
  193. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +63 -0
  194. package/deps/rocksdb/rocksdb/db/lookup_key.h +66 -0
  195. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +54 -0
  196. package/deps/rocksdb/rocksdb/db/malloc_stats.h +24 -0
  197. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +296 -0
  198. package/deps/rocksdb/rocksdb/db/memtable.cc +1169 -0
  199. package/deps/rocksdb/rocksdb/db/memtable.h +554 -0
  200. package/deps/rocksdb/rocksdb/db/memtable_list.cc +888 -0
  201. package/deps/rocksdb/rocksdb/db/memtable_list.h +438 -0
  202. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +935 -0
  203. package/deps/rocksdb/rocksdb/db/merge_context.h +134 -0
  204. package/deps/rocksdb/rocksdb/db/merge_helper.cc +421 -0
  205. package/deps/rocksdb/rocksdb/db/merge_helper.h +197 -0
  206. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +290 -0
  207. package/deps/rocksdb/rocksdb/db/merge_operator.cc +86 -0
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +608 -0
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +338 -0
  210. package/deps/rocksdb/rocksdb/db/options_file_test.cc +119 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.cc +30 -0
  212. package/deps/rocksdb/rocksdb/db/output_validator.h +47 -0
  213. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +993 -0
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +113 -0
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +76 -0
  216. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +231 -0
  217. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +87 -0
  218. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1374 -0
  219. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +38 -0
  220. package/deps/rocksdb/rocksdb/db/prefix_test.cc +910 -0
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +489 -0
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +446 -0
  223. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +260 -0
  224. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +709 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +439 -0
  226. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +256 -0
  227. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +552 -0
  228. package/deps/rocksdb/rocksdb/db/read_callback.h +53 -0
  229. package/deps/rocksdb/rocksdb/db/repair.cc +722 -0
  230. package/deps/rocksdb/rocksdb/db/repair_test.cc +390 -0
  231. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +61 -0
  232. package/deps/rocksdb/rocksdb/db/snapshot_impl.cc +26 -0
  233. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +167 -0
  234. package/deps/rocksdb/rocksdb/db/table_cache.cc +704 -0
  235. package/deps/rocksdb/rocksdb/db/table_cache.h +233 -0
  236. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +75 -0
  237. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +107 -0
  238. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +517 -0
  239. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +318 -0
  240. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +128 -0
  241. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.cc +54 -0
  242. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.h +44 -0
  243. package/deps/rocksdb/rocksdb/db/version_builder.cc +1078 -0
  244. package/deps/rocksdb/rocksdb/db/version_builder.h +69 -0
  245. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1551 -0
  246. package/deps/rocksdb/rocksdb/db/version_edit.cc +955 -0
  247. package/deps/rocksdb/rocksdb/db/version_edit.h +609 -0
  248. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +699 -0
  249. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +252 -0
  250. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +597 -0
  251. package/deps/rocksdb/rocksdb/db/version_set.cc +6333 -0
  252. package/deps/rocksdb/rocksdb/db/version_set.h +1485 -0
  253. package/deps/rocksdb/rocksdb/db/version_set_test.cc +3035 -0
  254. package/deps/rocksdb/rocksdb/db/wal_edit.cc +204 -0
  255. package/deps/rocksdb/rocksdb/db/wal_edit.h +166 -0
  256. package/deps/rocksdb/rocksdb/db/wal_edit_test.cc +214 -0
  257. package/deps/rocksdb/rocksdb/db/wal_manager.cc +517 -0
  258. package/deps/rocksdb/rocksdb/db/wal_manager.h +119 -0
  259. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +340 -0
  260. package/deps/rocksdb/rocksdb/db/write_batch.cc +2174 -0
  261. package/deps/rocksdb/rocksdb/db/write_batch_base.cc +94 -0
  262. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +250 -0
  263. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +907 -0
  264. package/deps/rocksdb/rocksdb/db/write_callback.h +27 -0
  265. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +457 -0
  266. package/deps/rocksdb/rocksdb/db/write_controller.cc +128 -0
  267. package/deps/rocksdb/rocksdb/db/write_controller.h +144 -0
  268. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +135 -0
  269. package/deps/rocksdb/rocksdb/db/write_thread.cc +796 -0
  270. package/deps/rocksdb/rocksdb/db/write_thread.h +433 -0
  271. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +14 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +341 -0
  273. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +520 -0
  274. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +23 -0
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +337 -0
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +554 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +79 -0
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +173 -0
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +17 -0
  280. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +38 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +763 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +222 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +27 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +428 -0
  285. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +218 -0
  286. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +64 -0
  287. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +2430 -0
  288. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +237 -0
  289. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +343 -0
  290. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +800 -0
  291. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +920 -0
  292. package/deps/rocksdb/rocksdb/env/env.cc +733 -0
  293. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +352 -0
  294. package/deps/rocksdb/rocksdb/env/env_chroot.cc +346 -0
  295. package/deps/rocksdb/rocksdb/env/env_chroot.h +22 -0
  296. package/deps/rocksdb/rocksdb/env/env_encryption.cc +1148 -0
  297. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +137 -0
  298. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +648 -0
  299. package/deps/rocksdb/rocksdb/env/env_posix.cc +514 -0
  300. package/deps/rocksdb/rocksdb/env/env_test.cc +2230 -0
  301. package/deps/rocksdb/rocksdb/env/file_system.cc +132 -0
  302. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +448 -0
  303. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +415 -0
  304. package/deps/rocksdb/rocksdb/env/fs_posix.cc +1086 -0
  305. package/deps/rocksdb/rocksdb/env/io_posix.cc +1499 -0
  306. package/deps/rocksdb/rocksdb/env/io_posix.h +402 -0
  307. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +140 -0
  308. package/deps/rocksdb/rocksdb/env/mock_env.cc +1066 -0
  309. package/deps/rocksdb/rocksdb/env/mock_env.h +41 -0
  310. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +85 -0
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +402 -0
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +150 -0
  313. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +717 -0
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +156 -0
  315. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +99 -0
  316. package/deps/rocksdb/rocksdb/file/file_util.cc +268 -0
  317. package/deps/rocksdb/rocksdb/file/file_util.h +96 -0
  318. package/deps/rocksdb/rocksdb/file/filename.cc +473 -0
  319. package/deps/rocksdb/rocksdb/file/filename.h +182 -0
  320. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +188 -0
  321. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +315 -0
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +142 -0
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +482 -0
  324. package/deps/rocksdb/rocksdb/file/read_write_util.cc +67 -0
  325. package/deps/rocksdb/rocksdb/file/read_write_util.h +34 -0
  326. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +169 -0
  327. package/deps/rocksdb/rocksdb/file/readahead_raf.h +29 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +237 -0
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +63 -0
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +552 -0
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +203 -0
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +523 -0
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +251 -0
  334. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +386 -0
  335. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +839 -0
  336. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +2218 -0
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +294 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +71 -0
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +214 -0
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +98 -0
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +137 -0
  342. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +40 -0
  343. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +46 -0
  344. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +359 -0
  345. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +499 -0
  346. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +138 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +1697 -0
  348. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +11 -0
  349. package/deps/rocksdb/rocksdb/include/rocksdb/db_dump_tool.h +45 -0
  350. package/deps/rocksdb/rocksdb/include/rocksdb/db_stress_tool.h +11 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1671 -0
  352. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +405 -0
  353. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +29 -0
  354. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +129 -0
  355. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1472 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +238 -0
  357. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +61 -0
  358. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +269 -0
  359. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +56 -0
  360. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +128 -0
  361. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +43 -0
  362. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +556 -0
  363. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +77 -0
  364. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +385 -0
  365. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +257 -0
  366. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +155 -0
  367. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1702 -0
  368. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +237 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +35 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +73 -0
  371. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +139 -0
  372. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +10 -0
  373. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +269 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +103 -0
  375. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +48 -0
  376. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +19 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +136 -0
  378. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +47 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +145 -0
  380. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +135 -0
  381. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +592 -0
  382. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +69 -0
  383. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +608 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +711 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +280 -0
  386. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +188 -0
  387. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +58 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +48 -0
  389. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +121 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +74 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +86 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +535 -0
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +61 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/convenience.h +10 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +72 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +49 -0
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +175 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +180 -0
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/info_log_finder.h +19 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +288 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +71 -0
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/leveldb_options.h +145 -0
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +43 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +55 -0
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +50 -0
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +205 -0
  407. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +100 -0
  408. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +19 -0
  409. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +876 -0
  410. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +128 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +94 -0
  412. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +504 -0
  413. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +95 -0
  414. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +626 -0
  415. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +432 -0
  416. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +92 -0
  417. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +34 -0
  418. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +279 -0
  419. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +16 -0
  420. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +102 -0
  421. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +377 -0
  422. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +127 -0
  423. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +106 -0
  424. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +300 -0
  425. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +165 -0
  426. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +684 -0
  427. package/deps/rocksdb/rocksdb/logging/env_logger.h +165 -0
  428. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +162 -0
  429. package/deps/rocksdb/rocksdb/logging/event_logger.cc +70 -0
  430. package/deps/rocksdb/rocksdb/logging/event_logger.h +203 -0
  431. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +43 -0
  432. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +92 -0
  433. package/deps/rocksdb/rocksdb/logging/log_buffer.h +56 -0
  434. package/deps/rocksdb/rocksdb/logging/logging.h +68 -0
  435. package/deps/rocksdb/rocksdb/logging/posix_logger.h +185 -0
  436. package/deps/rocksdb/rocksdb/memory/allocator.h +57 -0
  437. package/deps/rocksdb/rocksdb/memory/arena.cc +233 -0
  438. package/deps/rocksdb/rocksdb/memory/arena.h +141 -0
  439. package/deps/rocksdb/rocksdb/memory/arena_test.cc +204 -0
  440. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +47 -0
  441. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +218 -0
  442. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +206 -0
  443. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +78 -0
  444. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +33 -0
  445. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +27 -0
  446. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +102 -0
  447. package/deps/rocksdb/rocksdb/memory/memory_allocator.h +38 -0
  448. package/deps/rocksdb/rocksdb/memory/memory_usage.h +25 -0
  449. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +62 -0
  450. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +844 -0
  451. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +49 -0
  452. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +349 -0
  453. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +44 -0
  454. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +997 -0
  455. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +663 -0
  456. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +677 -0
  457. package/deps/rocksdb/rocksdb/memtable/skiplist.h +496 -0
  458. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +388 -0
  459. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +280 -0
  460. package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +33 -0
  461. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +301 -0
  462. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -0
  463. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +203 -0
  464. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +23 -0
  465. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +287 -0
  466. package/deps/rocksdb/rocksdb/monitoring/histogram.h +149 -0
  467. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +231 -0
  468. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +200 -0
  469. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +84 -0
  470. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +49 -0
  471. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.h +74 -0
  472. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +71 -0
  473. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +98 -0
  474. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +62 -0
  475. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +60 -0
  476. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +29 -0
  477. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +566 -0
  478. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +97 -0
  479. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +28 -0
  480. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +18 -0
  481. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +79 -0
  482. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +169 -0
  483. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.h +83 -0
  484. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +431 -0
  485. package/deps/rocksdb/rocksdb/monitoring/statistics.h +138 -0
  486. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -0
  487. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +652 -0
  488. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +163 -0
  489. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +314 -0
  490. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +233 -0
  491. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +43 -0
  492. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +206 -0
  493. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +134 -0
  494. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +32 -0
  495. package/deps/rocksdb/rocksdb/options/cf_options.cc +1026 -0
  496. package/deps/rocksdb/rocksdb/options/cf_options.h +308 -0
  497. package/deps/rocksdb/rocksdb/options/configurable.cc +681 -0
  498. package/deps/rocksdb/rocksdb/options/configurable_helper.h +251 -0
  499. package/deps/rocksdb/rocksdb/options/configurable_test.cc +757 -0
  500. package/deps/rocksdb/rocksdb/options/configurable_test.h +127 -0
  501. package/deps/rocksdb/rocksdb/options/customizable.cc +77 -0
  502. package/deps/rocksdb/rocksdb/options/customizable_helper.h +216 -0
  503. package/deps/rocksdb/rocksdb/options/customizable_test.cc +625 -0
  504. package/deps/rocksdb/rocksdb/options/db_options.cc +835 -0
  505. package/deps/rocksdb/rocksdb/options/db_options.h +126 -0
  506. package/deps/rocksdb/rocksdb/options/options.cc +664 -0
  507. package/deps/rocksdb/rocksdb/options/options_helper.cc +1391 -0
  508. package/deps/rocksdb/rocksdb/options/options_helper.h +118 -0
  509. package/deps/rocksdb/rocksdb/options/options_parser.cc +721 -0
  510. package/deps/rocksdb/rocksdb/options/options_parser.h +151 -0
  511. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +583 -0
  512. package/deps/rocksdb/rocksdb/options/options_test.cc +3794 -0
  513. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +106 -0
  514. package/deps/rocksdb/rocksdb/port/lang.h +16 -0
  515. package/deps/rocksdb/rocksdb/port/likely.h +18 -0
  516. package/deps/rocksdb/rocksdb/port/malloc.h +17 -0
  517. package/deps/rocksdb/rocksdb/port/port.h +21 -0
  518. package/deps/rocksdb/rocksdb/port/port_dirent.h +44 -0
  519. package/deps/rocksdb/rocksdb/port/port_example.h +101 -0
  520. package/deps/rocksdb/rocksdb/port/port_posix.cc +266 -0
  521. package/deps/rocksdb/rocksdb/port/port_posix.h +223 -0
  522. package/deps/rocksdb/rocksdb/port/stack_trace.cc +179 -0
  523. package/deps/rocksdb/rocksdb/port/stack_trace.h +28 -0
  524. package/deps/rocksdb/rocksdb/port/sys_time.h +47 -0
  525. package/deps/rocksdb/rocksdb/port/util_logger.h +20 -0
  526. package/deps/rocksdb/rocksdb/port/win/env_default.cc +45 -0
  527. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1449 -0
  528. package/deps/rocksdb/rocksdb/port/win/env_win.h +294 -0
  529. package/deps/rocksdb/rocksdb/port/win/io_win.cc +1084 -0
  530. package/deps/rocksdb/rocksdb/port/win/io_win.h +494 -0
  531. package/deps/rocksdb/rocksdb/port/win/port_win.cc +283 -0
  532. package/deps/rocksdb/rocksdb/port/win/port_win.h +411 -0
  533. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +79 -0
  534. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +194 -0
  535. package/deps/rocksdb/rocksdb/port/win/win_logger.h +67 -0
  536. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +183 -0
  537. package/deps/rocksdb/rocksdb/port/win/win_thread.h +122 -0
  538. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +221 -0
  539. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +26 -0
  540. package/deps/rocksdb/rocksdb/port/xpress.h +17 -0
  541. package/deps/rocksdb/rocksdb/src.mk +631 -0
  542. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +126 -0
  543. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +57 -0
  544. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +73 -0
  545. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.h +48 -0
  546. package/deps/rocksdb/rocksdb/table/block_based/block.cc +1049 -0
  547. package/deps/rocksdb/rocksdb/table/block_based/block.h +720 -0
  548. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +348 -0
  549. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +119 -0
  550. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +434 -0
  551. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1835 -0
  552. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +193 -0
  553. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +839 -0
  554. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +95 -0
  555. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +383 -0
  556. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +251 -0
  557. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3563 -0
  558. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +681 -0
  559. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +190 -0
  560. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +347 -0
  561. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +201 -0
  562. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +78 -0
  563. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +66 -0
  564. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +32 -0
  565. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +232 -0
  566. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +66 -0
  567. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +623 -0
  568. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  569. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +220 -0
  570. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +59 -0
  571. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +25 -0
  572. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +93 -0
  573. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +136 -0
  574. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +717 -0
  575. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +180 -0
  576. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +102 -0
  577. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +55 -0
  578. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +1407 -0
  579. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +168 -0
  580. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +88 -0
  581. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +41 -0
  582. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +344 -0
  583. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +139 -0
  584. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +333 -0
  585. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +147 -0
  586. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.h +49 -0
  587. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +248 -0
  588. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +444 -0
  589. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +54 -0
  590. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +85 -0
  591. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +56 -0
  592. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +22 -0
  593. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +40 -0
  594. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +521 -0
  595. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +144 -0
  596. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +424 -0
  597. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +163 -0
  598. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +142 -0
  599. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +186 -0
  600. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +51 -0
  601. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +64 -0
  602. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +38 -0
  603. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +120 -0
  604. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +59 -0
  605. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +324 -0
  606. package/deps/rocksdb/rocksdb/table/block_fetcher.h +129 -0
  607. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +534 -0
  608. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +277 -0
  609. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +543 -0
  610. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +136 -0
  611. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +663 -0
  612. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +107 -0
  613. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +81 -0
  614. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +404 -0
  615. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +101 -0
  616. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +585 -0
  617. package/deps/rocksdb/rocksdb/table/format.cc +422 -0
  618. package/deps/rocksdb/rocksdb/table/format.h +348 -0
  619. package/deps/rocksdb/rocksdb/table/get_context.cc +408 -0
  620. package/deps/rocksdb/rocksdb/table/get_context.h +212 -0
  621. package/deps/rocksdb/rocksdb/table/internal_iterator.h +205 -0
  622. package/deps/rocksdb/rocksdb/table/iter_heap.h +42 -0
  623. package/deps/rocksdb/rocksdb/table/iterator.cc +210 -0
  624. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +180 -0
  625. package/deps/rocksdb/rocksdb/table/merger_test.cc +180 -0
  626. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +481 -0
  627. package/deps/rocksdb/rocksdb/table/merging_iterator.h +64 -0
  628. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +541 -0
  629. package/deps/rocksdb/rocksdb/table/meta_blocks.h +154 -0
  630. package/deps/rocksdb/rocksdb/table/mock_table.cc +328 -0
  631. package/deps/rocksdb/rocksdb/table/mock_table.h +89 -0
  632. package/deps/rocksdb/rocksdb/table/multiget_context.h +282 -0
  633. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +116 -0
  634. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +44 -0
  635. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +34 -0
  636. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +78 -0
  637. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +135 -0
  638. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +332 -0
  639. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +153 -0
  640. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +263 -0
  641. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +182 -0
  642. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +211 -0
  643. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +249 -0
  644. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +506 -0
  645. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +201 -0
  646. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +781 -0
  647. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +247 -0
  648. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +61 -0
  649. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +502 -0
  650. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +96 -0
  651. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +98 -0
  652. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +228 -0
  653. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +340 -0
  654. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +94 -0
  655. package/deps/rocksdb/rocksdb/table/table_builder.h +203 -0
  656. package/deps/rocksdb/rocksdb/table/table_factory.cc +38 -0
  657. package/deps/rocksdb/rocksdb/table/table_properties.cc +300 -0
  658. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +30 -0
  659. package/deps/rocksdb/rocksdb/table/table_reader.h +147 -0
  660. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +347 -0
  661. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +39 -0
  662. package/deps/rocksdb/rocksdb/table/table_test.cc +4769 -0
  663. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +215 -0
  664. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +43 -0
  665. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +38 -0
  666. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +74 -0
  667. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +93 -0
  668. package/deps/rocksdb/rocksdb/test_util/sync_point.h +161 -0
  669. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +129 -0
  670. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +74 -0
  671. package/deps/rocksdb/rocksdb/test_util/testharness.cc +56 -0
  672. package/deps/rocksdb/rocksdb/test_util/testharness.h +53 -0
  673. package/deps/rocksdb/rocksdb/test_util/testutil.cc +566 -0
  674. package/deps/rocksdb/rocksdb/test_util/testutil.h +887 -0
  675. package/deps/rocksdb/rocksdb/test_util/testutil_test.cc +43 -0
  676. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +388 -0
  677. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +132 -0
  678. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +27 -0
  679. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +45 -0
  680. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +166 -0
  681. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +570 -0
  682. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +92 -0
  683. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +54 -0
  684. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +152 -0
  685. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +59 -0
  686. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +141 -0
  687. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +33 -0
  688. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +74 -0
  689. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +117 -0
  690. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +263 -0
  691. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +96 -0
  692. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +40 -0
  693. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +29 -0
  694. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +144 -0
  695. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +30 -0
  696. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +51 -0
  697. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +28 -0
  698. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +10 -0
  699. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +26 -0
  700. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +138 -0
  701. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +23 -0
  702. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +57 -0
  703. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +260 -0
  704. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +52 -0
  705. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +328 -0
  706. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +1703 -0
  707. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +16 -0
  708. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +304 -0
  709. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +39 -0
  710. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +26 -0
  711. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +318 -0
  712. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.cpp +12 -0
  713. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +57 -0
  714. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +219 -0
  715. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +207 -0
  716. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +164 -0
  717. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +57 -0
  718. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +77 -0
  719. package/deps/rocksdb/rocksdb/third-party/gcc/ppc-asm.h +390 -0
  720. package/deps/rocksdb/rocksdb/thirdparty.inc +268 -0
  721. package/deps/rocksdb/rocksdb/tools/CMakeLists.txt +30 -0
  722. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +110 -0
  723. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/__init__.py +2 -0
  724. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +2000 -0
  725. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +156 -0
  726. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +734 -0
  727. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +2307 -0
  728. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +395 -0
  729. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +721 -0
  730. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +719 -0
  731. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +25 -0
  732. package/deps/rocksdb/rocksdb/tools/db_bench.cc +21 -0
  733. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +7416 -0
  734. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +328 -0
  735. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +130 -0
  736. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +297 -0
  737. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +259 -0
  738. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_dump.cc +63 -0
  739. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +62 -0
  740. package/deps/rocksdb/rocksdb/tools/io_tracer_parser.cc +25 -0
  741. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +187 -0
  742. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +120 -0
  743. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.h +40 -0
  744. package/deps/rocksdb/rocksdb/tools/ldb.cc +21 -0
  745. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3609 -0
  746. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +665 -0
  747. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +746 -0
  748. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +159 -0
  749. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +221 -0
  750. package/deps/rocksdb/rocksdb/tools/sst_dump.cc +20 -0
  751. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +427 -0
  752. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +541 -0
  753. package/deps/rocksdb/rocksdb/tools/trace_analyzer.cc +25 -0
  754. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +752 -0
  755. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2001 -0
  756. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +292 -0
  757. package/deps/rocksdb/rocksdb/tools/write_stress.cc +305 -0
  758. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +496 -0
  759. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +294 -0
  760. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +379 -0
  761. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +229 -0
  762. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +174 -0
  763. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +215 -0
  764. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +491 -0
  765. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +195 -0
  766. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +255 -0
  767. package/deps/rocksdb/rocksdb/util/autovector.h +367 -0
  768. package/deps/rocksdb/rocksdb/util/autovector_test.cc +330 -0
  769. package/deps/rocksdb/rocksdb/util/bloom_impl.h +485 -0
  770. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1191 -0
  771. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -0
  772. package/deps/rocksdb/rocksdb/util/build_version.h +15 -0
  773. package/deps/rocksdb/rocksdb/util/cast_util.h +20 -0
  774. package/deps/rocksdb/rocksdb/util/channel.h +67 -0
  775. package/deps/rocksdb/rocksdb/util/coding.cc +89 -0
  776. package/deps/rocksdb/rocksdb/util/coding.h +419 -0
  777. package/deps/rocksdb/rocksdb/util/coding_lean.h +101 -0
  778. package/deps/rocksdb/rocksdb/util/coding_test.cc +217 -0
  779. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +92 -0
  780. package/deps/rocksdb/rocksdb/util/comparator.cc +219 -0
  781. package/deps/rocksdb/rocksdb/util/compression.h +1529 -0
  782. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +108 -0
  783. package/deps/rocksdb/rocksdb/util/compression_context_cache.h +47 -0
  784. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +67 -0
  785. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +67 -0
  786. package/deps/rocksdb/rocksdb/util/core_local.h +83 -0
  787. package/deps/rocksdb/rocksdb/util/crc32c.cc +1283 -0
  788. package/deps/rocksdb/rocksdb/util/crc32c.h +51 -0
  789. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +169 -0
  790. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +50 -0
  791. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +94 -0
  792. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +19 -0
  793. package/deps/rocksdb/rocksdb/util/crc32c_ppc_asm.S +756 -0
  794. package/deps/rocksdb/rocksdb/util/crc32c_ppc_constants.h +900 -0
  795. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +180 -0
  796. package/deps/rocksdb/rocksdb/util/defer.h +52 -0
  797. package/deps/rocksdb/rocksdb/util/defer_test.cc +39 -0
  798. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +68 -0
  799. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +70 -0
  800. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +214 -0
  801. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +323 -0
  802. package/deps/rocksdb/rocksdb/util/fastrange.h +112 -0
  803. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +136 -0
  804. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +98 -0
  805. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +449 -0
  806. package/deps/rocksdb/rocksdb/util/filelock_test.cc +152 -0
  807. package/deps/rocksdb/rocksdb/util/filter_bench.cc +781 -0
  808. package/deps/rocksdb/rocksdb/util/gflags_compat.h +20 -0
  809. package/deps/rocksdb/rocksdb/util/hash.cc +83 -0
  810. package/deps/rocksdb/rocksdb/util/hash.h +107 -0
  811. package/deps/rocksdb/rocksdb/util/hash_map.h +67 -0
  812. package/deps/rocksdb/rocksdb/util/hash_test.cc +593 -0
  813. package/deps/rocksdb/rocksdb/util/heap.h +166 -0
  814. package/deps/rocksdb/rocksdb/util/heap_test.cc +139 -0
  815. package/deps/rocksdb/rocksdb/util/kv_map.h +33 -0
  816. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +86 -0
  817. package/deps/rocksdb/rocksdb/util/math.h +186 -0
  818. package/deps/rocksdb/rocksdb/util/math128.h +298 -0
  819. package/deps/rocksdb/rocksdb/util/murmurhash.cc +191 -0
  820. package/deps/rocksdb/rocksdb/util/murmurhash.h +42 -0
  821. package/deps/rocksdb/rocksdb/util/mutexlock.h +186 -0
  822. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +27 -0
  823. package/deps/rocksdb/rocksdb/util/random.cc +56 -0
  824. package/deps/rocksdb/rocksdb/util/random.h +186 -0
  825. package/deps/rocksdb/rocksdb/util/random_test.cc +105 -0
  826. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +340 -0
  827. package/deps/rocksdb/rocksdb/util/rate_limiter.h +113 -0
  828. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +251 -0
  829. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +151 -0
  830. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +107 -0
  831. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1201 -0
  832. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +1062 -0
  833. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +931 -0
  834. package/deps/rocksdb/rocksdb/util/set_comparator.h +22 -0
  835. package/deps/rocksdb/rocksdb/util/slice.cc +243 -0
  836. package/deps/rocksdb/rocksdb/util/slice_test.cc +163 -0
  837. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +153 -0
  838. package/deps/rocksdb/rocksdb/util/status.cc +149 -0
  839. package/deps/rocksdb/rocksdb/util/stderr_logger.h +31 -0
  840. package/deps/rocksdb/rocksdb/util/stop_watch.h +118 -0
  841. package/deps/rocksdb/rocksdb/util/string_util.cc +422 -0
  842. package/deps/rocksdb/rocksdb/util/string_util.h +144 -0
  843. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +354 -0
  844. package/deps/rocksdb/rocksdb/util/thread_local.cc +554 -0
  845. package/deps/rocksdb/rocksdb/util/thread_local.h +101 -0
  846. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +583 -0
  847. package/deps/rocksdb/rocksdb/util/thread_operation.h +121 -0
  848. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +506 -0
  849. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +112 -0
  850. package/deps/rocksdb/rocksdb/util/timer.h +331 -0
  851. package/deps/rocksdb/rocksdb/util/timer_queue.h +230 -0
  852. package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +72 -0
  853. package/deps/rocksdb/rocksdb/util/timer_test.cc +399 -0
  854. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +80 -0
  855. package/deps/rocksdb/rocksdb/util/vector_iterator.h +101 -0
  856. package/deps/rocksdb/rocksdb/util/work_queue.h +148 -0
  857. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +268 -0
  858. package/deps/rocksdb/rocksdb/util/xxh3p.h +1392 -0
  859. package/deps/rocksdb/rocksdb/util/xxhash.cc +1158 -0
  860. package/deps/rocksdb/rocksdb/util/xxhash.h +598 -0
  861. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +2354 -0
  862. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db_test.cc +2955 -0
  863. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +488 -0
  864. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +199 -0
  865. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +112 -0
  866. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +266 -0
  867. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +52 -0
  868. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2167 -0
  869. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +500 -0
  870. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +113 -0
  871. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +147 -0
  872. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +66 -0
  873. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +2386 -0
  874. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +281 -0
  875. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +58 -0
  876. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +314 -0
  877. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +244 -0
  878. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +47 -0
  879. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +42 -0
  880. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +375 -0
  881. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +327 -0
  882. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +114 -0
  883. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +187 -0
  884. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +390 -0
  885. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +184 -0
  886. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +67 -0
  887. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +44 -0
  888. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +75 -0
  889. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +72 -0
  890. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +43 -0
  891. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +588 -0
  892. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +82 -0
  893. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +821 -0
  894. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +37 -0
  895. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +29 -0
  896. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +27 -0
  897. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +25 -0
  898. package/deps/rocksdb/rocksdb/utilities/debug.cc +82 -0
  899. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +1497 -0
  900. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +1146 -0
  901. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +262 -0
  902. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +223 -0
  903. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +145 -0
  904. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +44 -0
  905. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +490 -0
  906. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +242 -0
  907. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +581 -0
  908. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +437 -0
  909. package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +56 -0
  910. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +275 -0
  911. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +52 -0
  912. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +59 -0
  913. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +39 -0
  914. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +77 -0
  915. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +83 -0
  916. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +97 -0
  917. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +38 -0
  918. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +59 -0
  919. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +31 -0
  920. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +117 -0
  921. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +49 -0
  922. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +598 -0
  923. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +69 -0
  924. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +55 -0
  925. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +87 -0
  926. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +174 -0
  927. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +168 -0
  928. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +431 -0
  929. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +159 -0
  930. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +655 -0
  931. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +425 -0
  932. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +156 -0
  933. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +609 -0
  934. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +296 -0
  935. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +127 -0
  936. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +86 -0
  937. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +125 -0
  938. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +238 -0
  939. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +308 -0
  940. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +168 -0
  941. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +160 -0
  942. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +174 -0
  943. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +360 -0
  944. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +456 -0
  945. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +286 -0
  946. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +167 -0
  947. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +339 -0
  948. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_util.h +67 -0
  949. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +140 -0
  950. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +142 -0
  951. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +285 -0
  952. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.h +231 -0
  953. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +494 -0
  954. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +356 -0
  955. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +224 -0
  956. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +122 -0
  957. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +72 -0
  958. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +244 -0
  959. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +125 -0
  960. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +48 -0
  961. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +29 -0
  962. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +82 -0
  963. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_tracker.h +209 -0
  964. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +720 -0
  965. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +223 -0
  966. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +181 -0
  967. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +319 -0
  968. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +270 -0
  969. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +99 -0
  970. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +30 -0
  971. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +306 -0
  972. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3 +661 -0
  973. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2 +174 -0
  974. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2 +339 -0
  975. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +76 -0
  976. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +138 -0
  977. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +102 -0
  978. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +139 -0
  979. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +174 -0
  980. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +222 -0
  981. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +141 -0
  982. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +525 -0
  983. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +253 -0
  984. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1007 -0
  985. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +560 -0
  986. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +527 -0
  987. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +265 -0
  988. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +178 -0
  989. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +520 -0
  990. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +302 -0
  991. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +120 -0
  992. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +92 -0
  993. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +213 -0
  994. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +124 -0
  995. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +215 -0
  996. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +39 -0
  997. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +130 -0
  998. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +82 -0
  999. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +286 -0
  1000. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +87 -0
  1001. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +520 -0
  1002. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +179 -0
  1003. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +172 -0
  1004. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +27 -0
  1005. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +132 -0
  1006. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +153 -0
  1007. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +98 -0
  1008. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +144 -0
  1009. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +201 -0
  1010. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +141 -0
  1011. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +794 -0
  1012. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +1295 -0
  1013. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +165 -0
  1014. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +76 -0
  1015. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +479 -0
  1016. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +130 -0
  1017. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +156 -0
  1018. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +146 -0
  1019. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +196 -0
  1020. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +101 -0
  1021. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +111 -0
  1022. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +87 -0
  1023. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1418 -0
  1024. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +752 -0
  1025. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +232 -0
  1026. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +628 -0
  1027. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +228 -0
  1028. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +49 -0
  1029. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +678 -0
  1030. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +373 -0
  1031. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +135 -0
  1032. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +26 -0
  1033. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +6350 -0
  1034. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +522 -0
  1035. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +188 -0
  1036. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +80 -0
  1037. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3531 -0
  1038. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +483 -0
  1039. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +119 -0
  1040. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +999 -0
  1041. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +1109 -0
  1042. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +786 -0
  1043. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1039 -0
  1044. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +341 -0
  1045. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +470 -0
  1046. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +108 -0
  1047. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +332 -0
  1048. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +353 -0
  1049. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +703 -0
  1050. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +99 -0
  1051. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +617 -0
  1052. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +345 -0
  1053. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +569 -0
  1054. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1867 -0
  1055. package/deps/rocksdb/rocksdb.gyp +475 -0
  1056. package/deps/snappy/freebsd/config.h +135 -0
  1057. package/deps/snappy/freebsd/snappy-stubs-public.h +100 -0
  1058. package/deps/snappy/linux/config.h +135 -0
  1059. package/deps/snappy/linux/snappy-stubs-public.h +100 -0
  1060. package/deps/snappy/mac/config.h +137 -0
  1061. package/deps/snappy/mac/snappy-stubs-public.h +100 -0
  1062. package/deps/snappy/openbsd/config.h +135 -0
  1063. package/deps/snappy/openbsd/snappy-stubs-public.h +100 -0
  1064. package/deps/snappy/snappy-1.1.7/COPYING +54 -0
  1065. package/deps/snappy/snappy-1.1.7/cmake/SnappyConfig.cmake +1 -0
  1066. package/deps/snappy/snappy-1.1.7/cmake/config.h.in +62 -0
  1067. package/deps/snappy/snappy-1.1.7/snappy-c.cc +90 -0
  1068. package/deps/snappy/snappy-1.1.7/snappy-c.h +138 -0
  1069. package/deps/snappy/snappy-1.1.7/snappy-internal.h +224 -0
  1070. package/deps/snappy/snappy-1.1.7/snappy-sinksource.cc +104 -0
  1071. package/deps/snappy/snappy-1.1.7/snappy-sinksource.h +182 -0
  1072. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.cc +42 -0
  1073. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.h +561 -0
  1074. package/deps/snappy/snappy-1.1.7/snappy-stubs-public.h.in +94 -0
  1075. package/deps/snappy/snappy-1.1.7/snappy-test.cc +612 -0
  1076. package/deps/snappy/snappy-1.1.7/snappy-test.h +573 -0
  1077. package/deps/snappy/snappy-1.1.7/snappy.cc +1515 -0
  1078. package/deps/snappy/snappy-1.1.7/snappy.h +203 -0
  1079. package/deps/snappy/snappy-1.1.7/snappy_unittest.cc +1410 -0
  1080. package/deps/snappy/snappy.gyp +90 -0
  1081. package/deps/snappy/solaris/config.h +135 -0
  1082. package/deps/snappy/solaris/snappy-stubs-public.h +100 -0
  1083. package/deps/snappy/win32/config.h +29 -0
  1084. package/deps/snappy/win32/snappy-stubs-public.h +100 -0
  1085. package/iterator.js +55 -0
  1086. package/leveldown.js +113 -0
  1087. package/package-lock.json +23687 -0
  1088. package/package.json +70 -0
@@ -0,0 +1,1472 @@
1
+ // Copyright (c) 2019-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
+ //
6
+ // A FileSystem is an interface used by the rocksdb implementation to access
7
+ // storage functionality like the filesystem etc. Callers
8
+ // may wish to provide a custom FileSystem object when opening a database to
9
+ // get fine gain control; e.g., to rate limit file system operations.
10
+ //
11
+ // All FileSystem implementations are safe for concurrent access from
12
+ // multiple threads without any external synchronization.
13
+ //
14
+ // WARNING: Since this is a new interface, it is expected that there will be
15
+ // some changes as storage systems are ported over.
16
+
17
+ #pragma once
18
+
19
+ #include <stdint.h>
20
+ #include <chrono>
21
+ #include <cstdarg>
22
+ #include <functional>
23
+ #include <limits>
24
+ #include <memory>
25
+ #include <sstream>
26
+ #include <string>
27
+ #include <vector>
28
+ #include "rocksdb/env.h"
29
+ #include "rocksdb/io_status.h"
30
+ #include "rocksdb/options.h"
31
+ #include "rocksdb/thread_status.h"
32
+
33
+ namespace ROCKSDB_NAMESPACE {
34
+
35
+ class FileLock;
36
+ class FSDirectory;
37
+ class FSRandomAccessFile;
38
+ class FSRandomRWFile;
39
+ class FSSequentialFile;
40
+ class FSWritableFile;
41
+ class Logger;
42
+ class Slice;
43
+ struct ImmutableDBOptions;
44
+ struct MutableDBOptions;
45
+ class RateLimiter;
46
+
47
+ using AccessPattern = RandomAccessFile::AccessPattern;
48
+ using FileAttributes = Env::FileAttributes;
49
+
50
+ // Priority of an IO request. This is a hint and does not guarantee any
51
+ // particular QoS.
52
+ // IO_LOW - Typically background reads/writes such as compaction/flush
53
+ // IO_HIGH - Typically user reads/synchronous WAL writes
54
+ enum class IOPriority : uint8_t {
55
+ kIOLow,
56
+ kIOHigh,
57
+ kIOTotal,
58
+ };
59
+
60
+ // Type of the data begin read/written. It can be passed down as a flag
61
+ // for the FileSystem implementation to optionally handle different types in
62
+ // different ways
63
+ enum class IOType : uint8_t {
64
+ kData,
65
+ kFilter,
66
+ kIndex,
67
+ kMetadata,
68
+ kWAL,
69
+ kManifest,
70
+ kLog,
71
+ kUnknown,
72
+ kInvalid,
73
+ };
74
+
75
+ // Per-request options that can be passed down to the FileSystem
76
+ // implementation. These are hints and are not necessarily guaranteed to be
77
+ // honored. More hints can be added here in the future to indicate things like
78
+ // storage media (HDD/SSD) to be used, replication level etc.
79
+ struct IOOptions {
80
+ // Timeout for the operation in microseconds
81
+ std::chrono::microseconds timeout;
82
+
83
+ // Priority - high or low
84
+ IOPriority prio;
85
+
86
+ // Type of data being read/written
87
+ IOType type;
88
+
89
+ IOOptions() : timeout(0), prio(IOPriority::kIOLow), type(IOType::kUnknown) {}
90
+ };
91
+
92
+ // File scope options that control how a file is opened/created and accessed
93
+ // while its open. We may add more options here in the future such as
94
+ // redundancy level, media to use etc.
95
+ struct FileOptions : EnvOptions {
96
+ // Embedded IOOptions to control the parameters for any IOs that need
97
+ // to be issued for the file open/creation
98
+ IOOptions io_options;
99
+
100
+ FileOptions() : EnvOptions() {}
101
+
102
+ FileOptions(const DBOptions& opts)
103
+ : EnvOptions(opts) {}
104
+
105
+ FileOptions(const EnvOptions& opts)
106
+ : EnvOptions(opts) {}
107
+
108
+ FileOptions(const FileOptions& opts)
109
+ : EnvOptions(opts), io_options(opts.io_options) {}
110
+
111
+ FileOptions& operator=(const FileOptions& opts) = default;
112
+ };
113
+
114
+ // A structure to pass back some debugging information from the FileSystem
115
+ // implementation to RocksDB in case of an IO error
116
+ struct IODebugContext {
117
+ // file_path to be filled in by RocksDB in case of an error
118
+ std::string file_path;
119
+
120
+ // A map of counter names to values - set by the FileSystem implementation
121
+ std::map<std::string, uint64_t> counters;
122
+
123
+ // To be set by the FileSystem implementation
124
+ std::string msg;
125
+
126
+ IODebugContext() {}
127
+
128
+ void AddCounter(std::string& name, uint64_t value) {
129
+ counters.emplace(name, value);
130
+ }
131
+
132
+ std::string ToString() {
133
+ std::ostringstream ss;
134
+ ss << file_path << ", ";
135
+ for (auto counter : counters) {
136
+ ss << counter.first << " = " << counter.second << ",";
137
+ }
138
+ ss << msg;
139
+ return ss.str();
140
+ }
141
+ };
142
+
143
+ // The FileSystem, FSSequentialFile, FSRandomAccessFile, FSWritableFile,
144
+ // FSRandomRWFileclass, and FSDIrectory classes define the interface between
145
+ // RocksDB and storage systems, such as Posix filesystems,
146
+ // remote filesystems etc.
147
+ // The interface allows for fine grained control of individual IO operations,
148
+ // such as setting a timeout, prioritization, hints on data placement,
149
+ // different handling based on type of IO etc.
150
+ // This is accomplished by passing an instance of IOOptions to every
151
+ // API call that can potentially perform IO. Additionally, each such API is
152
+ // passed a pointer to a IODebugContext structure that can be used by the
153
+ // storage system to include troubleshooting information. The return values
154
+ // of the APIs is of type IOStatus, which can indicate an error code/sub-code,
155
+ // as well as metadata about the error such as its scope and whether its
156
+ // retryable.
157
+ class FileSystem {
158
+ public:
159
+ FileSystem();
160
+
161
+ // No copying allowed
162
+ FileSystem(const FileSystem&) = delete;
163
+
164
+ virtual ~FileSystem();
165
+
166
+ virtual const char* Name() const = 0;
167
+
168
+ static const char* Type() { return "FileSystem"; }
169
+
170
+ // Loads the FileSystem specified by the input value into the result
171
+ static Status Load(const std::string& value,
172
+ std::shared_ptr<FileSystem>* result);
173
+
174
+ // Return a default fie_system suitable for the current operating
175
+ // system. Sophisticated users may wish to provide their own Env
176
+ // implementation instead of relying on this default file_system
177
+ //
178
+ // The result of Default() belongs to rocksdb and must never be deleted.
179
+ static std::shared_ptr<FileSystem> Default();
180
+
181
+ // Handles the event when a new DB or a new ColumnFamily starts using the
182
+ // specified data paths.
183
+ //
184
+ // The data paths might be shared by different DBs or ColumnFamilies,
185
+ // so RegisterDbPaths might be called with the same data paths.
186
+ // For example, when CreateColumnFamily is called multiple times with the same
187
+ // data path, RegisterDbPaths will also be called with the same data path.
188
+ //
189
+ // If the return status is ok, then the paths must be correspondingly
190
+ // called in UnregisterDbPaths;
191
+ // otherwise this method should have no side effect, and UnregisterDbPaths
192
+ // do not need to be called for the paths.
193
+ //
194
+ // Different implementations may take different actions.
195
+ // By default, it's a no-op and returns Status::OK.
196
+ virtual Status RegisterDbPaths(const std::vector<std::string>& /*paths*/) {
197
+ return Status::OK();
198
+ }
199
+ // Handles the event a DB or a ColumnFamily stops using the specified data
200
+ // paths.
201
+ //
202
+ // It should be called corresponding to each successful RegisterDbPaths.
203
+ //
204
+ // Different implementations may take different actions.
205
+ // By default, it's a no-op and returns Status::OK.
206
+ virtual Status UnregisterDbPaths(const std::vector<std::string>& /*paths*/) {
207
+ return Status::OK();
208
+ }
209
+
210
+ // Create a brand new sequentially-readable file with the specified name.
211
+ // On success, stores a pointer to the new file in *result and returns OK.
212
+ // On failure stores nullptr in *result and returns non-OK. If the file does
213
+ // not exist, returns a non-OK status.
214
+ //
215
+ // The returned file will only be accessed by one thread at a time.
216
+ virtual IOStatus NewSequentialFile(const std::string& fname,
217
+ const FileOptions& file_opts,
218
+ std::unique_ptr<FSSequentialFile>* result,
219
+ IODebugContext* dbg) = 0;
220
+
221
+ // Create a brand new random access read-only file with the
222
+ // specified name. On success, stores a pointer to the new file in
223
+ // *result and returns OK. On failure stores nullptr in *result and
224
+ // returns non-OK. If the file does not exist, returns a non-OK
225
+ // status.
226
+ //
227
+ // The returned file may be concurrently accessed by multiple threads.
228
+ virtual IOStatus NewRandomAccessFile(
229
+ const std::string& fname, const FileOptions& file_opts,
230
+ std::unique_ptr<FSRandomAccessFile>* result,
231
+ IODebugContext* dbg) = 0;
232
+ // These values match Linux definition
233
+ // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/fcntl.h#n56
234
+ enum WriteLifeTimeHint {
235
+ kWLTHNotSet = 0, // No hint information set
236
+ kWLTHNone, // No hints about write life time
237
+ kWLTHShort, // Data written has a short life time
238
+ kWLTHMedium, // Data written has a medium life time
239
+ kWLTHLong, // Data written has a long life time
240
+ kWLTHExtreme, // Data written has an extremely long life time
241
+ };
242
+
243
+ // Create an object that writes to a new file with the specified
244
+ // name. Deletes any existing file with the same name and creates a
245
+ // new file. On success, stores a pointer to the new file in
246
+ // *result and returns OK. On failure stores nullptr in *result and
247
+ // returns non-OK.
248
+ //
249
+ // The returned file will only be accessed by one thread at a time.
250
+ virtual IOStatus NewWritableFile(const std::string& fname,
251
+ const FileOptions& file_opts,
252
+ std::unique_ptr<FSWritableFile>* result,
253
+ IODebugContext* dbg) = 0;
254
+
255
+ // Create an object that writes to a new file with the specified
256
+ // name. Deletes any existing file with the same name and creates a
257
+ // new file. On success, stores a pointer to the new file in
258
+ // *result and returns OK. On failure stores nullptr in *result and
259
+ // returns non-OK.
260
+ //
261
+ // The returned file will only be accessed by one thread at a time.
262
+ virtual IOStatus ReopenWritableFile(
263
+ const std::string& /*fname*/, const FileOptions& /*options*/,
264
+ std::unique_ptr<FSWritableFile>* /*result*/, IODebugContext* /*dbg*/) {
265
+ return IOStatus::NotSupported("ReopenWritableFile");
266
+ }
267
+
268
+ // Reuse an existing file by renaming it and opening it as writable.
269
+ virtual IOStatus ReuseWritableFile(const std::string& fname,
270
+ const std::string& old_fname,
271
+ const FileOptions& file_opts,
272
+ std::unique_ptr<FSWritableFile>* result,
273
+ IODebugContext* dbg);
274
+
275
+ // Open `fname` for random read and write, if file doesn't exist the file
276
+ // will be created. On success, stores a pointer to the new file in
277
+ // *result and returns OK. On failure returns non-OK.
278
+ //
279
+ // The returned file will only be accessed by one thread at a time.
280
+ virtual IOStatus NewRandomRWFile(const std::string& /*fname*/,
281
+ const FileOptions& /*options*/,
282
+ std::unique_ptr<FSRandomRWFile>* /*result*/,
283
+ IODebugContext* /*dbg*/) {
284
+ return IOStatus::NotSupported(
285
+ "RandomRWFile is not implemented in this FileSystem");
286
+ }
287
+
288
+ // Opens `fname` as a memory-mapped file for read and write (in-place updates
289
+ // only, i.e., no appends). On success, stores a raw buffer covering the whole
290
+ // file in `*result`. The file must exist prior to this call.
291
+ virtual IOStatus NewMemoryMappedFileBuffer(
292
+ const std::string& /*fname*/,
293
+ std::unique_ptr<MemoryMappedFileBuffer>* /*result*/) {
294
+ return IOStatus::NotSupported(
295
+ "MemoryMappedFileBuffer is not implemented in this FileSystem");
296
+ }
297
+
298
+ // Create an object that represents a directory. Will fail if directory
299
+ // doesn't exist. If the directory exists, it will open the directory
300
+ // and create a new Directory object.
301
+ //
302
+ // On success, stores a pointer to the new Directory in
303
+ // *result and returns OK. On failure stores nullptr in *result and
304
+ // returns non-OK.
305
+ virtual IOStatus NewDirectory(const std::string& name,
306
+ const IOOptions& io_opts,
307
+ std::unique_ptr<FSDirectory>* result,
308
+ IODebugContext* dbg) = 0;
309
+
310
+ // Returns OK if the named file exists.
311
+ // NotFound if the named file does not exist,
312
+ // the calling process does not have permission to determine
313
+ // whether this file exists, or if the path is invalid.
314
+ // IOError if an IO Error was encountered
315
+ virtual IOStatus FileExists(const std::string& fname,
316
+ const IOOptions& options,
317
+ IODebugContext* dbg) = 0;
318
+
319
+ // Store in *result the names of the children of the specified directory.
320
+ // The names are relative to "dir".
321
+ // Original contents of *results are dropped.
322
+ // Returns OK if "dir" exists and "*result" contains its children.
323
+ // NotFound if "dir" does not exist, the calling process does not have
324
+ // permission to access "dir", or if "dir" is invalid.
325
+ // IOError if an IO Error was encountered
326
+ virtual IOStatus GetChildren(const std::string& dir, const IOOptions& options,
327
+ std::vector<std::string>* result,
328
+ IODebugContext* dbg) = 0;
329
+
330
+ // Store in *result the attributes of the children of the specified directory.
331
+ // In case the implementation lists the directory prior to iterating the files
332
+ // and files are concurrently deleted, the deleted files will be omitted from
333
+ // result.
334
+ // The name attributes are relative to "dir".
335
+ // Original contents of *results are dropped.
336
+ // Returns OK if "dir" exists and "*result" contains its children.
337
+ // NotFound if "dir" does not exist, the calling process does not have
338
+ // permission to access "dir", or if "dir" is invalid.
339
+ // IOError if an IO Error was encountered
340
+ virtual IOStatus GetChildrenFileAttributes(
341
+ const std::string& dir, const IOOptions& options,
342
+ std::vector<FileAttributes>* result, IODebugContext* dbg) {
343
+ assert(result != nullptr);
344
+ std::vector<std::string> child_fnames;
345
+ IOStatus s = GetChildren(dir, options, &child_fnames, dbg);
346
+ if (!s.ok()) {
347
+ return s;
348
+ }
349
+ result->resize(child_fnames.size());
350
+ size_t result_size = 0;
351
+ for (size_t i = 0; i < child_fnames.size(); ++i) {
352
+ const std::string path = dir + "/" + child_fnames[i];
353
+ if (!(s = GetFileSize(path, options, &(*result)[result_size].size_bytes,
354
+ dbg))
355
+ .ok()) {
356
+ if (FileExists(path, options, dbg).IsNotFound()) {
357
+ // The file may have been deleted since we listed the directory
358
+ continue;
359
+ }
360
+ return s;
361
+ }
362
+ (*result)[result_size].name = std::move(child_fnames[i]);
363
+ result_size++;
364
+ }
365
+ result->resize(result_size);
366
+ return IOStatus::OK();
367
+ }
368
+
369
+ // This seems to clash with a macro on Windows, so #undef it here
370
+ #ifdef DeleteFile
371
+ #undef DeleteFile
372
+ #endif
373
+ // Delete the named file.
374
+ virtual IOStatus DeleteFile(const std::string& fname,
375
+ const IOOptions& options,
376
+ IODebugContext* dbg) = 0;
377
+
378
+ // Truncate the named file to the specified size.
379
+ virtual IOStatus Truncate(const std::string& /*fname*/, size_t /*size*/,
380
+ const IOOptions& /*options*/,
381
+ IODebugContext* /*dbg*/) {
382
+ return IOStatus::NotSupported("Truncate is not supported for this FileSystem");
383
+ }
384
+
385
+ // Create the specified directory. Returns error if directory exists.
386
+ virtual IOStatus CreateDir(const std::string& dirname,
387
+ const IOOptions& options, IODebugContext* dbg) = 0;
388
+
389
+ // Creates directory if missing. Return Ok if it exists, or successful in
390
+ // Creating.
391
+ virtual IOStatus CreateDirIfMissing(const std::string& dirname,
392
+ const IOOptions& options,
393
+ IODebugContext* dbg) = 0;
394
+
395
+ // Delete the specified directory.
396
+ virtual IOStatus DeleteDir(const std::string& dirname,
397
+ const IOOptions& options, IODebugContext* dbg) = 0;
398
+
399
+ // Store the size of fname in *file_size.
400
+ virtual IOStatus GetFileSize(const std::string& fname,
401
+ const IOOptions& options, uint64_t* file_size,
402
+ IODebugContext* dbg) = 0;
403
+
404
+ // Store the last modification time of fname in *file_mtime.
405
+ virtual IOStatus GetFileModificationTime(const std::string& fname,
406
+ const IOOptions& options,
407
+ uint64_t* file_mtime,
408
+ IODebugContext* dbg) = 0;
409
+ // Rename file src to target.
410
+ virtual IOStatus RenameFile(const std::string& src, const std::string& target,
411
+ const IOOptions& options,
412
+ IODebugContext* dbg) = 0;
413
+
414
+ // Hard Link file src to target.
415
+ virtual IOStatus LinkFile(const std::string& /*src*/,
416
+ const std::string& /*target*/,
417
+ const IOOptions& /*options*/,
418
+ IODebugContext* /*dbg*/) {
419
+ return IOStatus::NotSupported("LinkFile is not supported for this FileSystem");
420
+ }
421
+
422
+ virtual IOStatus NumFileLinks(const std::string& /*fname*/,
423
+ const IOOptions& /*options*/,
424
+ uint64_t* /*count*/, IODebugContext* /*dbg*/) {
425
+ return IOStatus::NotSupported(
426
+ "Getting number of file links is not supported for this FileSystem");
427
+ }
428
+
429
+ virtual IOStatus AreFilesSame(const std::string& /*first*/,
430
+ const std::string& /*second*/,
431
+ const IOOptions& /*options*/, bool* /*res*/,
432
+ IODebugContext* /*dbg*/) {
433
+ return IOStatus::NotSupported("AreFilesSame is not supported for this FileSystem");
434
+ }
435
+
436
+ // Lock the specified file. Used to prevent concurrent access to
437
+ // the same db by multiple processes. On failure, stores nullptr in
438
+ // *lock and returns non-OK.
439
+ //
440
+ // On success, stores a pointer to the object that represents the
441
+ // acquired lock in *lock and returns OK. The caller should call
442
+ // UnlockFile(*lock) to release the lock. If the process exits,
443
+ // the lock will be automatically released.
444
+ //
445
+ // If somebody else already holds the lock, finishes immediately
446
+ // with a failure. I.e., this call does not wait for existing locks
447
+ // to go away.
448
+ //
449
+ // May create the named file if it does not already exist.
450
+ virtual IOStatus LockFile(const std::string& fname, const IOOptions& options,
451
+ FileLock** lock, IODebugContext* dbg) = 0;
452
+
453
+ // Release the lock acquired by a previous successful call to LockFile.
454
+ // REQUIRES: lock was returned by a successful LockFile() call
455
+ // REQUIRES: lock has not already been unlocked.
456
+ virtual IOStatus UnlockFile(FileLock* lock, const IOOptions& options,
457
+ IODebugContext* dbg) = 0;
458
+
459
+ // *path is set to a temporary directory that can be used for testing. It may
460
+ // or many not have just been created. The directory may or may not differ
461
+ // between runs of the same process, but subsequent calls will return the
462
+ // same directory.
463
+ virtual IOStatus GetTestDirectory(const IOOptions& options, std::string* path,
464
+ IODebugContext* dbg) = 0;
465
+
466
+ // Create and returns a default logger (an instance of EnvLogger) for storing
467
+ // informational messages. Derived classes can overide to provide custom
468
+ // logger.
469
+ virtual IOStatus NewLogger(const std::string& fname, const IOOptions& io_opts,
470
+ std::shared_ptr<Logger>* result,
471
+ IODebugContext* dbg) = 0;
472
+
473
+ // Get full directory name for this db.
474
+ virtual IOStatus GetAbsolutePath(const std::string& db_path,
475
+ const IOOptions& options,
476
+ std::string* output_path,
477
+ IODebugContext* dbg) = 0;
478
+
479
+ // Sanitize the FileOptions. Typically called by a FileOptions/EnvOptions
480
+ // copy constructor
481
+ virtual void SanitizeFileOptions(FileOptions* /*opts*/) const {}
482
+
483
+ // OptimizeForLogRead will create a new FileOptions object that is a copy of
484
+ // the FileOptions in the parameters, but is optimized for reading log files.
485
+ virtual FileOptions OptimizeForLogRead(const FileOptions& file_options) const;
486
+
487
+ // OptimizeForManifestRead will create a new FileOptions object that is a copy
488
+ // of the FileOptions in the parameters, but is optimized for reading manifest
489
+ // files.
490
+ virtual FileOptions OptimizeForManifestRead(
491
+ const FileOptions& file_options) const;
492
+
493
+ // OptimizeForLogWrite will create a new FileOptions object that is a copy of
494
+ // the FileOptions in the parameters, but is optimized for writing log files.
495
+ // Default implementation returns the copy of the same object.
496
+ virtual FileOptions OptimizeForLogWrite(const FileOptions& file_options,
497
+ const DBOptions& db_options) const;
498
+
499
+ // OptimizeForManifestWrite will create a new FileOptions object that is a
500
+ // copy of the FileOptions in the parameters, but is optimized for writing
501
+ // manifest files. Default implementation returns the copy of the same
502
+ // object.
503
+ virtual FileOptions OptimizeForManifestWrite(
504
+ const FileOptions& file_options) const;
505
+
506
+ // OptimizeForCompactionTableWrite will create a new FileOptions object that
507
+ // is a copy of the FileOptions in the parameters, but is optimized for
508
+ // writing table files.
509
+ virtual FileOptions OptimizeForCompactionTableWrite(
510
+ const FileOptions& file_options,
511
+ const ImmutableDBOptions& immutable_ops) const;
512
+
513
+ // OptimizeForCompactionTableRead will create a new FileOptions object that
514
+ // is a copy of the FileOptions in the parameters, but is optimized for
515
+ // reading table files.
516
+ virtual FileOptions OptimizeForCompactionTableRead(
517
+ const FileOptions& file_options,
518
+ const ImmutableDBOptions& db_options) const;
519
+
520
+ // This seems to clash with a macro on Windows, so #undef it here
521
+ #ifdef GetFreeSpace
522
+ #undef GetFreeSpace
523
+ #endif
524
+
525
+ // Get the amount of free disk space
526
+ virtual IOStatus GetFreeSpace(const std::string& /*path*/,
527
+ const IOOptions& /*options*/,
528
+ uint64_t* /*diskfree*/,
529
+ IODebugContext* /*dbg*/) {
530
+ return IOStatus::NotSupported("GetFreeSpace");
531
+ }
532
+
533
+ virtual IOStatus IsDirectory(const std::string& /*path*/,
534
+ const IOOptions& options, bool* is_dir,
535
+ IODebugContext* /*dgb*/) = 0;
536
+
537
+ // If you're adding methods here, remember to add them to EnvWrapper too.
538
+
539
+ private:
540
+ void operator=(const FileSystem&);
541
+ };
542
+
543
+ // A file abstraction for reading sequentially through a file
544
+ class FSSequentialFile {
545
+ public:
546
+ FSSequentialFile() {}
547
+
548
+ virtual ~FSSequentialFile() {}
549
+
550
+ // Read up to "n" bytes from the file. "scratch[0..n-1]" may be
551
+ // written by this routine. Sets "*result" to the data that was
552
+ // read (including if fewer than "n" bytes were successfully read).
553
+ // May set "*result" to point at data in "scratch[0..n-1]", so
554
+ // "scratch[0..n-1]" must be live when "*result" is used.
555
+ // If an error was encountered, returns a non-OK status.
556
+ //
557
+ // REQUIRES: External synchronization
558
+ virtual IOStatus Read(size_t n, const IOOptions& options, Slice* result,
559
+ char* scratch, IODebugContext* dbg) = 0;
560
+
561
+ // Skip "n" bytes from the file. This is guaranteed to be no
562
+ // slower that reading the same data, but may be faster.
563
+ //
564
+ // If end of file is reached, skipping will stop at the end of the
565
+ // file, and Skip will return OK.
566
+ //
567
+ // REQUIRES: External synchronization
568
+ virtual IOStatus Skip(uint64_t n) = 0;
569
+
570
+ // Indicates the upper layers if the current SequentialFile implementation
571
+ // uses direct IO.
572
+ virtual bool use_direct_io() const { return false; }
573
+
574
+ // Use the returned alignment value to allocate
575
+ // aligned buffer for Direct I/O
576
+ virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; }
577
+
578
+ // Remove any kind of caching of data from the offset to offset+length
579
+ // of this file. If the length is 0, then it refers to the end of file.
580
+ // If the system is not caching the file contents, then this is a noop.
581
+ virtual IOStatus InvalidateCache(size_t /*offset*/, size_t /*length*/) {
582
+ return IOStatus::NotSupported("InvalidateCache not supported.");
583
+ }
584
+
585
+ // Positioned Read for direct I/O
586
+ // If Direct I/O enabled, offset, n, and scratch should be properly aligned
587
+ virtual IOStatus PositionedRead(uint64_t /*offset*/, size_t /*n*/,
588
+ const IOOptions& /*options*/,
589
+ Slice* /*result*/, char* /*scratch*/,
590
+ IODebugContext* /*dbg*/) {
591
+ return IOStatus::NotSupported("PositionedRead");
592
+ }
593
+
594
+ // If you're adding methods here, remember to add them to
595
+ // SequentialFileWrapper too.
596
+ };
597
+
598
+ // A read IO request structure for use in MultiRead
599
+ struct FSReadRequest {
600
+ // File offset in bytes
601
+ uint64_t offset;
602
+
603
+ // Length to read in bytes
604
+ size_t len;
605
+
606
+ // A buffer that MultiRead() can optionally place data in. It can
607
+ // ignore this and allocate its own buffer
608
+ char* scratch;
609
+
610
+ // Output parameter set by MultiRead() to point to the data buffer, and
611
+ // the number of valid bytes
612
+ Slice result;
613
+
614
+ // Status of read
615
+ IOStatus status;
616
+ };
617
+
618
+ // A file abstraction for randomly reading the contents of a file.
619
+ class FSRandomAccessFile {
620
+ public:
621
+ FSRandomAccessFile() {}
622
+
623
+ virtual ~FSRandomAccessFile() {}
624
+
625
+ // Read up to "n" bytes from the file starting at "offset".
626
+ // "scratch[0..n-1]" may be written by this routine. Sets "*result"
627
+ // to the data that was read (including if fewer than "n" bytes were
628
+ // successfully read). May set "*result" to point at data in
629
+ // "scratch[0..n-1]", so "scratch[0..n-1]" must be live when
630
+ // "*result" is used. If an error was encountered, returns a non-OK
631
+ // status.
632
+ //
633
+ // Safe for concurrent use by multiple threads.
634
+ // If Direct I/O enabled, offset, n, and scratch should be aligned properly.
635
+ virtual IOStatus Read(uint64_t offset, size_t n, const IOOptions& options,
636
+ Slice* result, char* scratch,
637
+ IODebugContext* dbg) const = 0;
638
+
639
+ // Readahead the file starting from offset by n bytes for caching.
640
+ // If it's not implemented (default: `NotSupported`), RocksDB will create
641
+ // internal prefetch buffer to improve read performance.
642
+ virtual IOStatus Prefetch(uint64_t /*offset*/, size_t /*n*/,
643
+ const IOOptions& /*options*/,
644
+ IODebugContext* /*dbg*/) {
645
+ return IOStatus::NotSupported("Prefetch");
646
+ }
647
+
648
+ // Read a bunch of blocks as described by reqs. The blocks can
649
+ // optionally be read in parallel. This is a synchronous call, i.e it
650
+ // should return after all reads have completed. The reads will be
651
+ // non-overlapping. If the function return Status is not ok, status of
652
+ // individual requests will be ignored and return status will be assumed
653
+ // for all read requests. The function return status is only meant for any
654
+ // any errors that occur before even processing specific read requests
655
+ virtual IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs,
656
+ const IOOptions& options, IODebugContext* dbg) {
657
+ assert(reqs != nullptr);
658
+ for (size_t i = 0; i < num_reqs; ++i) {
659
+ FSReadRequest& req = reqs[i];
660
+ req.status =
661
+ Read(req.offset, req.len, options, &req.result, req.scratch, dbg);
662
+ }
663
+ return IOStatus::OK();
664
+ }
665
+
666
+ // Tries to get an unique ID for this file that will be the same each time
667
+ // the file is opened (and will stay the same while the file is open).
668
+ // Furthermore, it tries to make this ID at most "max_size" bytes. If such an
669
+ // ID can be created this function returns the length of the ID and places it
670
+ // in "id"; otherwise, this function returns 0, in which case "id"
671
+ // may not have been modified.
672
+ //
673
+ // This function guarantees, for IDs from a given environment, two unique ids
674
+ // cannot be made equal to each other by adding arbitrary bytes to one of
675
+ // them. That is, no unique ID is the prefix of another.
676
+ //
677
+ // This function guarantees that the returned ID will not be interpretable as
678
+ // a single varint.
679
+ //
680
+ // Note: these IDs are only valid for the duration of the process.
681
+ virtual size_t GetUniqueId(char* /*id*/, size_t /*max_size*/) const {
682
+ return 0; // Default implementation to prevent issues with backwards
683
+ // compatibility.
684
+ };
685
+
686
+ enum AccessPattern { kNormal, kRandom, kSequential, kWillNeed, kWontNeed };
687
+
688
+ virtual void Hint(AccessPattern /*pattern*/) {}
689
+
690
+ // Indicates the upper layers if the current RandomAccessFile implementation
691
+ // uses direct IO.
692
+ virtual bool use_direct_io() const { return false; }
693
+
694
+ // Use the returned alignment value to allocate
695
+ // aligned buffer for Direct I/O
696
+ virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; }
697
+
698
+ // Remove any kind of caching of data from the offset to offset+length
699
+ // of this file. If the length is 0, then it refers to the end of file.
700
+ // If the system is not caching the file contents, then this is a noop.
701
+ virtual IOStatus InvalidateCache(size_t /*offset*/, size_t /*length*/) {
702
+ return IOStatus::NotSupported("InvalidateCache not supported.");
703
+ }
704
+
705
+ // If you're adding methods here, remember to add them to
706
+ // RandomAccessFileWrapper too.
707
+ };
708
+
709
+ // A data structure brings the data verification information, which is
710
+ // used togther with data being written to a file.
711
+ struct DataVerificationInfo {
712
+ // checksum of the data being written.
713
+ Slice checksum;
714
+ };
715
+
716
+ // A file abstraction for sequential writing. The implementation
717
+ // must provide buffering since callers may append small fragments
718
+ // at a time to the file.
719
+ class FSWritableFile {
720
+ public:
721
+ FSWritableFile()
722
+ : last_preallocated_block_(0),
723
+ preallocation_block_size_(0),
724
+ io_priority_(Env::IO_TOTAL),
725
+ write_hint_(Env::WLTH_NOT_SET),
726
+ strict_bytes_per_sync_(false) {}
727
+
728
+ explicit FSWritableFile(const FileOptions& options)
729
+ : last_preallocated_block_(0),
730
+ preallocation_block_size_(0),
731
+ io_priority_(Env::IO_TOTAL),
732
+ write_hint_(Env::WLTH_NOT_SET),
733
+ strict_bytes_per_sync_(options.strict_bytes_per_sync) {}
734
+
735
+ virtual ~FSWritableFile() {}
736
+
737
+ // Append data to the end of the file
738
+ // Note: A WriteabelFile object must support either Append or
739
+ // PositionedAppend, so the users cannot mix the two.
740
+ virtual IOStatus Append(const Slice& data, const IOOptions& options,
741
+ IODebugContext* dbg) = 0;
742
+
743
+ // EXPERIMENTAL / CURRENTLY UNUSED
744
+ // Append data with verification information
745
+ // Note that this API change is experimental and it might be changed in
746
+ // the future. Currently, RocksDB does not use this API.
747
+ virtual IOStatus Append(const Slice& data, const IOOptions& options,
748
+ const DataVerificationInfo& /* verification_info */,
749
+ IODebugContext* dbg) {
750
+ return Append(data, options, dbg);
751
+ }
752
+
753
+ // PositionedAppend data to the specified offset. The new EOF after append
754
+ // must be larger than the previous EOF. This is to be used when writes are
755
+ // not backed by OS buffers and hence has to always start from the start of
756
+ // the sector. The implementation thus needs to also rewrite the last
757
+ // partial sector.
758
+ // Note: PositionAppend does not guarantee moving the file offset after the
759
+ // write. A WritableFile object must support either Append or
760
+ // PositionedAppend, so the users cannot mix the two.
761
+ //
762
+ // PositionedAppend() can only happen on the page/sector boundaries. For that
763
+ // reason, if the last write was an incomplete sector we still need to rewind
764
+ // back to the nearest sector/page and rewrite the portion of it with whatever
765
+ // we need to add. We need to keep where we stop writing.
766
+ //
767
+ // PositionedAppend() can only write whole sectors. For that reason we have to
768
+ // pad with zeros for the last write and trim the file when closing according
769
+ // to the position we keep in the previous step.
770
+ //
771
+ // PositionedAppend() requires aligned buffer to be passed in. The alignment
772
+ // required is queried via GetRequiredBufferAlignment()
773
+ virtual IOStatus PositionedAppend(const Slice& /* data */,
774
+ uint64_t /* offset */,
775
+ const IOOptions& /*options*/,
776
+ IODebugContext* /*dbg*/) {
777
+ return IOStatus::NotSupported("PositionedAppend");
778
+ }
779
+
780
+ // EXPERIMENTAL / CURRENTLY UNUSED
781
+ // PositionedAppend data with verification information.
782
+ // Note that this API change is experimental and it might be changed in
783
+ // the future. Currently, RocksDB does not use this API.
784
+ virtual IOStatus PositionedAppend(
785
+ const Slice& /* data */, uint64_t /* offset */,
786
+ const IOOptions& /*options*/,
787
+ const DataVerificationInfo& /* verification_info */,
788
+ IODebugContext* /*dbg*/) {
789
+ return IOStatus::NotSupported("PositionedAppend");
790
+ }
791
+
792
+ // Truncate is necessary to trim the file to the correct size
793
+ // before closing. It is not always possible to keep track of the file
794
+ // size due to whole pages writes. The behavior is undefined if called
795
+ // with other writes to follow.
796
+ virtual IOStatus Truncate(uint64_t /*size*/, const IOOptions& /*options*/,
797
+ IODebugContext* /*dbg*/) {
798
+ return IOStatus::OK();
799
+ }
800
+ virtual IOStatus Close(const IOOptions& options, IODebugContext* dbg) = 0;
801
+ virtual IOStatus Flush(const IOOptions& options, IODebugContext* dbg) = 0;
802
+ virtual IOStatus Sync(const IOOptions& options,
803
+ IODebugContext* dbg) = 0; // sync data
804
+
805
+ /*
806
+ * Sync data and/or metadata as well.
807
+ * By default, sync only data.
808
+ * Override this method for environments where we need to sync
809
+ * metadata as well.
810
+ */
811
+ virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) {
812
+ return Sync(options, dbg);
813
+ }
814
+
815
+ // true if Sync() and Fsync() are safe to call concurrently with Append()
816
+ // and Flush().
817
+ virtual bool IsSyncThreadSafe() const { return false; }
818
+
819
+ // Indicates the upper layers if the current WritableFile implementation
820
+ // uses direct IO.
821
+ virtual bool use_direct_io() const { return false; }
822
+
823
+ // Use the returned alignment value to allocate
824
+ // aligned buffer for Direct I/O
825
+ virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; }
826
+
827
+ virtual void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) {
828
+ write_hint_ = hint;
829
+ }
830
+
831
+ virtual void SetIOPriority(Env::IOPriority pri) { io_priority_ = pri; }
832
+
833
+ virtual Env::IOPriority GetIOPriority() { return io_priority_; }
834
+
835
+ virtual Env::WriteLifeTimeHint GetWriteLifeTimeHint() { return write_hint_; }
836
+ /*
837
+ * Get the size of valid data in the file.
838
+ */
839
+ virtual uint64_t GetFileSize(const IOOptions& /*options*/,
840
+ IODebugContext* /*dbg*/) {
841
+ return 0;
842
+ }
843
+
844
+ /*
845
+ * Get and set the default pre-allocation block size for writes to
846
+ * this file. If non-zero, then Allocate will be used to extend the
847
+ * underlying storage of a file (generally via fallocate) if the Env
848
+ * instance supports it.
849
+ */
850
+ virtual void SetPreallocationBlockSize(size_t size) {
851
+ preallocation_block_size_ = size;
852
+ }
853
+
854
+ virtual void GetPreallocationStatus(size_t* block_size,
855
+ size_t* last_allocated_block) {
856
+ *last_allocated_block = last_preallocated_block_;
857
+ *block_size = preallocation_block_size_;
858
+ }
859
+
860
+ // For documentation, refer to RandomAccessFile::GetUniqueId()
861
+ virtual size_t GetUniqueId(char* /*id*/, size_t /*max_size*/) const {
862
+ return 0; // Default implementation to prevent issues with backwards
863
+ }
864
+
865
+ // Remove any kind of caching of data from the offset to offset+length
866
+ // of this file. If the length is 0, then it refers to the end of file.
867
+ // If the system is not caching the file contents, then this is a noop.
868
+ // This call has no effect on dirty pages in the cache.
869
+ virtual IOStatus InvalidateCache(size_t /*offset*/, size_t /*length*/) {
870
+ return IOStatus::NotSupported("InvalidateCache not supported.");
871
+ }
872
+
873
+ // Sync a file range with disk.
874
+ // offset is the starting byte of the file range to be synchronized.
875
+ // nbytes specifies the length of the range to be synchronized.
876
+ // This asks the OS to initiate flushing the cached data to disk,
877
+ // without waiting for completion.
878
+ // Default implementation does nothing.
879
+ virtual IOStatus RangeSync(uint64_t /*offset*/, uint64_t /*nbytes*/,
880
+ const IOOptions& options, IODebugContext* dbg) {
881
+ if (strict_bytes_per_sync_) {
882
+ return Sync(options, dbg);
883
+ }
884
+ return IOStatus::OK();
885
+ }
886
+
887
+ // PrepareWrite performs any necessary preparation for a write
888
+ // before the write actually occurs. This allows for pre-allocation
889
+ // of space on devices where it can result in less file
890
+ // fragmentation and/or less waste from over-zealous filesystem
891
+ // pre-allocation.
892
+ virtual void PrepareWrite(size_t offset, size_t len, const IOOptions& options,
893
+ IODebugContext* dbg) {
894
+ if (preallocation_block_size_ == 0) {
895
+ return;
896
+ }
897
+ // If this write would cross one or more preallocation blocks,
898
+ // determine what the last preallocation block necessary to
899
+ // cover this write would be and Allocate to that point.
900
+ const auto block_size = preallocation_block_size_;
901
+ size_t new_last_preallocated_block =
902
+ (offset + len + block_size - 1) / block_size;
903
+ if (new_last_preallocated_block > last_preallocated_block_) {
904
+ size_t num_spanned_blocks =
905
+ new_last_preallocated_block - last_preallocated_block_;
906
+ Allocate(block_size * last_preallocated_block_,
907
+ block_size * num_spanned_blocks, options, dbg)
908
+ .PermitUncheckedError();
909
+ last_preallocated_block_ = new_last_preallocated_block;
910
+ }
911
+ }
912
+
913
+ // Pre-allocates space for a file.
914
+ virtual IOStatus Allocate(uint64_t /*offset*/, uint64_t /*len*/,
915
+ const IOOptions& /*options*/,
916
+ IODebugContext* /*dbg*/) {
917
+ return IOStatus::OK();
918
+ }
919
+
920
+ // If you're adding methods here, remember to add them to
921
+ // WritableFileWrapper too.
922
+
923
+ protected:
924
+ size_t preallocation_block_size() { return preallocation_block_size_; }
925
+
926
+ private:
927
+ size_t last_preallocated_block_;
928
+ size_t preallocation_block_size_;
929
+ // No copying allowed
930
+ FSWritableFile(const FSWritableFile&);
931
+ void operator=(const FSWritableFile&);
932
+
933
+ protected:
934
+ Env::IOPriority io_priority_;
935
+ Env::WriteLifeTimeHint write_hint_;
936
+ const bool strict_bytes_per_sync_;
937
+ };
938
+
939
+ // A file abstraction for random reading and writing.
940
+ class FSRandomRWFile {
941
+ public:
942
+ FSRandomRWFile() {}
943
+
944
+ virtual ~FSRandomRWFile() {}
945
+
946
+ // Indicates if the class makes use of direct I/O
947
+ // If false you must pass aligned buffer to Write()
948
+ virtual bool use_direct_io() const { return false; }
949
+
950
+ // Use the returned alignment value to allocate
951
+ // aligned buffer for Direct I/O
952
+ virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; }
953
+
954
+ // Write bytes in `data` at offset `offset`, Returns Status::OK() on success.
955
+ // Pass aligned buffer when use_direct_io() returns true.
956
+ virtual IOStatus Write(uint64_t offset, const Slice& data,
957
+ const IOOptions& options, IODebugContext* dbg) = 0;
958
+
959
+ // Read up to `n` bytes starting from offset `offset` and store them in
960
+ // result, provided `scratch` size should be at least `n`.
961
+ // Returns Status::OK() on success.
962
+ virtual IOStatus Read(uint64_t offset, size_t n, const IOOptions& options,
963
+ Slice* result, char* scratch,
964
+ IODebugContext* dbg) const = 0;
965
+
966
+ virtual IOStatus Flush(const IOOptions& options, IODebugContext* dbg) = 0;
967
+
968
+ virtual IOStatus Sync(const IOOptions& options, IODebugContext* dbg) = 0;
969
+
970
+ virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) {
971
+ return Sync(options, dbg);
972
+ }
973
+
974
+ virtual IOStatus Close(const IOOptions& options, IODebugContext* dbg) = 0;
975
+
976
+ // If you're adding methods here, remember to add them to
977
+ // RandomRWFileWrapper too.
978
+
979
+ // No copying allowed
980
+ FSRandomRWFile(const RandomRWFile&) = delete;
981
+ FSRandomRWFile& operator=(const RandomRWFile&) = delete;
982
+ };
983
+
984
+ // MemoryMappedFileBuffer object represents a memory-mapped file's raw buffer.
985
+ // Subclasses should release the mapping upon destruction.
986
+ class FSMemoryMappedFileBuffer {
987
+ public:
988
+ FSMemoryMappedFileBuffer(void* _base, size_t _length)
989
+ : base_(_base), length_(_length) {}
990
+
991
+ virtual ~FSMemoryMappedFileBuffer() = 0;
992
+
993
+ // We do not want to unmap this twice. We can make this class
994
+ // movable if desired, however, since
995
+ FSMemoryMappedFileBuffer(const FSMemoryMappedFileBuffer&) = delete;
996
+ FSMemoryMappedFileBuffer& operator=(const FSMemoryMappedFileBuffer&) = delete;
997
+
998
+ void* GetBase() const { return base_; }
999
+ size_t GetLen() const { return length_; }
1000
+
1001
+ protected:
1002
+ void* base_;
1003
+ const size_t length_;
1004
+ };
1005
+
1006
+ // Directory object represents collection of files and implements
1007
+ // filesystem operations that can be executed on directories.
1008
+ class FSDirectory {
1009
+ public:
1010
+ virtual ~FSDirectory() {}
1011
+ // Fsync directory. Can be called concurrently from multiple threads.
1012
+ virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) = 0;
1013
+
1014
+ virtual size_t GetUniqueId(char* /*id*/, size_t /*max_size*/) const {
1015
+ return 0;
1016
+ }
1017
+
1018
+ // If you're adding methods here, remember to add them to
1019
+ // DirectoryWrapper too.
1020
+ };
1021
+
1022
+ // Below are helpers for wrapping most of the classes in this file.
1023
+ // They forward all calls to another instance of the class.
1024
+ // Useful when wrapping the default implementations.
1025
+ // Typical usage is to inherit your wrapper from *Wrapper, e.g.:
1026
+ //
1027
+ // class MySequentialFileWrapper : public
1028
+ // ROCKSDB_NAMESPACE::FSSequentialFileWrapper {
1029
+ // public:
1030
+ // MySequentialFileWrapper(ROCKSDB_NAMESPACE::FSSequentialFile* target):
1031
+ // ROCKSDB_NAMESPACE::FSSequentialFileWrapper(target) {}
1032
+ // Status Read(size_t n, FileSystem::IOOptions& options, Slice* result,
1033
+ // char* scratch, FileSystem::IODebugContext* dbg) override {
1034
+ // cout << "Doing a read of size " << n << "!" << endl;
1035
+ // return ROCKSDB_NAMESPACE::FSSequentialFileWrapper::Read(n, options,
1036
+ // result,
1037
+ // scratch, dbg);
1038
+ // }
1039
+ // // All other methods are forwarded to target_ automatically.
1040
+ // };
1041
+ //
1042
+ // This is often more convenient than inheriting the class directly because
1043
+ // (a) Don't have to override and forward all methods - the Wrapper will
1044
+ // forward everything you're not explicitly overriding.
1045
+ // (b) Don't need to update the wrapper when more methods are added to the
1046
+ // rocksdb class. Unless you actually want to override the behavior.
1047
+ // (And unless rocksdb people forgot to update the *Wrapper class.)
1048
+
1049
+ // An implementation of Env that forwards all calls to another Env.
1050
+ // May be useful to clients who wish to override just part of the
1051
+ // functionality of another Env.
1052
+ class FileSystemWrapper : public FileSystem {
1053
+ public:
1054
+ // Initialize an EnvWrapper that delegates all calls to *t
1055
+ explicit FileSystemWrapper(const std::shared_ptr<FileSystem>& t)
1056
+ : target_(t) {}
1057
+ ~FileSystemWrapper() override {}
1058
+
1059
+ const char* Name() const override { return target_->Name(); }
1060
+
1061
+ // Return the target to which this Env forwards all calls
1062
+ FileSystem* target() const { return target_.get(); }
1063
+
1064
+ // The following text is boilerplate that forwards all methods to target()
1065
+ IOStatus NewSequentialFile(const std::string& f,
1066
+ const FileOptions& file_opts,
1067
+ std::unique_ptr<FSSequentialFile>* r,
1068
+ IODebugContext* dbg) override {
1069
+ return target_->NewSequentialFile(f, file_opts, r, dbg);
1070
+ }
1071
+ IOStatus NewRandomAccessFile(const std::string& f,
1072
+ const FileOptions& file_opts,
1073
+ std::unique_ptr<FSRandomAccessFile>* r,
1074
+ IODebugContext* dbg) override {
1075
+ return target_->NewRandomAccessFile(f, file_opts, r, dbg);
1076
+ }
1077
+ IOStatus NewWritableFile(const std::string& f, const FileOptions& file_opts,
1078
+ std::unique_ptr<FSWritableFile>* r,
1079
+ IODebugContext* dbg) override {
1080
+ return target_->NewWritableFile(f, file_opts, r, dbg);
1081
+ }
1082
+ IOStatus ReopenWritableFile(const std::string& fname,
1083
+ const FileOptions& file_opts,
1084
+ std::unique_ptr<FSWritableFile>* result,
1085
+ IODebugContext* dbg) override {
1086
+ return target_->ReopenWritableFile(fname, file_opts, result, dbg);
1087
+ }
1088
+ IOStatus ReuseWritableFile(const std::string& fname,
1089
+ const std::string& old_fname,
1090
+ const FileOptions& file_opts,
1091
+ std::unique_ptr<FSWritableFile>* r,
1092
+ IODebugContext* dbg) override {
1093
+ return target_->ReuseWritableFile(fname, old_fname, file_opts, r,
1094
+ dbg);
1095
+ }
1096
+ IOStatus NewRandomRWFile(const std::string& fname,
1097
+ const FileOptions& file_opts,
1098
+ std::unique_ptr<FSRandomRWFile>* result,
1099
+ IODebugContext* dbg) override {
1100
+ return target_->NewRandomRWFile(fname, file_opts, result, dbg);
1101
+ }
1102
+ IOStatus NewMemoryMappedFileBuffer(
1103
+ const std::string& fname,
1104
+ std::unique_ptr<MemoryMappedFileBuffer>* result) override {
1105
+ return target_->NewMemoryMappedFileBuffer(fname, result);
1106
+ }
1107
+ IOStatus NewDirectory(const std::string& name, const IOOptions& io_opts,
1108
+ std::unique_ptr<FSDirectory>* result,
1109
+ IODebugContext* dbg) override {
1110
+ return target_->NewDirectory(name, io_opts, result, dbg);
1111
+ }
1112
+ IOStatus FileExists(const std::string& f, const IOOptions& io_opts,
1113
+ IODebugContext* dbg) override {
1114
+ return target_->FileExists(f, io_opts, dbg);
1115
+ }
1116
+ IOStatus GetChildren(const std::string& dir, const IOOptions& io_opts,
1117
+ std::vector<std::string>* r,
1118
+ IODebugContext* dbg) override {
1119
+ return target_->GetChildren(dir, io_opts, r, dbg);
1120
+ }
1121
+ IOStatus GetChildrenFileAttributes(const std::string& dir,
1122
+ const IOOptions& options,
1123
+ std::vector<FileAttributes>* result,
1124
+ IODebugContext* dbg) override {
1125
+ return target_->GetChildrenFileAttributes(dir, options, result, dbg);
1126
+ }
1127
+ IOStatus DeleteFile(const std::string& f, const IOOptions& options,
1128
+ IODebugContext* dbg) override {
1129
+ return target_->DeleteFile(f, options, dbg);
1130
+ }
1131
+ IOStatus Truncate(const std::string& fname, size_t size,
1132
+ const IOOptions& options, IODebugContext* dbg) override {
1133
+ return target_->Truncate(fname, size, options, dbg);
1134
+ }
1135
+ IOStatus CreateDir(const std::string& d, const IOOptions& options,
1136
+ IODebugContext* dbg) override {
1137
+ return target_->CreateDir(d, options, dbg);
1138
+ }
1139
+ IOStatus CreateDirIfMissing(const std::string& d, const IOOptions& options,
1140
+ IODebugContext* dbg) override {
1141
+ return target_->CreateDirIfMissing(d, options, dbg);
1142
+ }
1143
+ IOStatus DeleteDir(const std::string& d, const IOOptions& options,
1144
+ IODebugContext* dbg) override {
1145
+ return target_->DeleteDir(d, options, dbg);
1146
+ }
1147
+ IOStatus GetFileSize(const std::string& f, const IOOptions& options,
1148
+ uint64_t* s, IODebugContext* dbg) override {
1149
+ return target_->GetFileSize(f, options, s, dbg);
1150
+ }
1151
+
1152
+ IOStatus GetFileModificationTime(const std::string& fname,
1153
+ const IOOptions& options,
1154
+ uint64_t* file_mtime,
1155
+ IODebugContext* dbg) override {
1156
+ return target_->GetFileModificationTime(fname, options, file_mtime, dbg);
1157
+ }
1158
+
1159
+ IOStatus GetAbsolutePath(const std::string& db_path, const IOOptions& options,
1160
+ std::string* output_path,
1161
+ IODebugContext* dbg) override {
1162
+ return target_->GetAbsolutePath(db_path, options, output_path, dbg);
1163
+ }
1164
+
1165
+ IOStatus RenameFile(const std::string& s, const std::string& t,
1166
+ const IOOptions& options, IODebugContext* dbg) override {
1167
+ return target_->RenameFile(s, t, options, dbg);
1168
+ }
1169
+
1170
+ IOStatus LinkFile(const std::string& s, const std::string& t,
1171
+ const IOOptions& options, IODebugContext* dbg) override {
1172
+ return target_->LinkFile(s, t, options, dbg);
1173
+ }
1174
+
1175
+ IOStatus NumFileLinks(const std::string& fname, const IOOptions& options,
1176
+ uint64_t* count, IODebugContext* dbg) override {
1177
+ return target_->NumFileLinks(fname, options, count, dbg);
1178
+ }
1179
+
1180
+ IOStatus AreFilesSame(const std::string& first, const std::string& second,
1181
+ const IOOptions& options, bool* res,
1182
+ IODebugContext* dbg) override {
1183
+ return target_->AreFilesSame(first, second, options, res, dbg);
1184
+ }
1185
+
1186
+ IOStatus LockFile(const std::string& f, const IOOptions& options,
1187
+ FileLock** l, IODebugContext* dbg) override {
1188
+ return target_->LockFile(f, options, l, dbg);
1189
+ }
1190
+
1191
+ IOStatus UnlockFile(FileLock* l, const IOOptions& options,
1192
+ IODebugContext* dbg) override {
1193
+ return target_->UnlockFile(l, options, dbg);
1194
+ }
1195
+
1196
+ IOStatus GetTestDirectory(const IOOptions& options, std::string* path,
1197
+ IODebugContext* dbg) override {
1198
+ return target_->GetTestDirectory(options, path, dbg);
1199
+ }
1200
+ IOStatus NewLogger(const std::string& fname, const IOOptions& options,
1201
+ std::shared_ptr<Logger>* result,
1202
+ IODebugContext* dbg) override {
1203
+ return target_->NewLogger(fname, options, result, dbg);
1204
+ }
1205
+
1206
+ void SanitizeFileOptions(FileOptions* opts) const override {
1207
+ target_->SanitizeFileOptions(opts);
1208
+ }
1209
+
1210
+ FileOptions OptimizeForLogRead(
1211
+ const FileOptions& file_options) const override {
1212
+ return target_->OptimizeForLogRead(file_options);
1213
+ }
1214
+ FileOptions OptimizeForManifestRead(
1215
+ const FileOptions& file_options) const override {
1216
+ return target_->OptimizeForManifestRead(file_options);
1217
+ }
1218
+ FileOptions OptimizeForLogWrite(const FileOptions& file_options,
1219
+ const DBOptions& db_options) const override {
1220
+ return target_->OptimizeForLogWrite(file_options, db_options);
1221
+ }
1222
+ FileOptions OptimizeForManifestWrite(
1223
+ const FileOptions& file_options) const override {
1224
+ return target_->OptimizeForManifestWrite(file_options);
1225
+ }
1226
+ FileOptions OptimizeForCompactionTableWrite(
1227
+ const FileOptions& file_options,
1228
+ const ImmutableDBOptions& immutable_ops) const override {
1229
+ return target_->OptimizeForCompactionTableWrite(file_options,
1230
+ immutable_ops);
1231
+ }
1232
+ FileOptions OptimizeForCompactionTableRead(
1233
+ const FileOptions& file_options,
1234
+ const ImmutableDBOptions& db_options) const override {
1235
+ return target_->OptimizeForCompactionTableRead(file_options, db_options);
1236
+ }
1237
+ IOStatus GetFreeSpace(const std::string& path, const IOOptions& options,
1238
+ uint64_t* diskfree, IODebugContext* dbg) override {
1239
+ return target_->GetFreeSpace(path, options, diskfree, dbg);
1240
+ }
1241
+ IOStatus IsDirectory(const std::string& path, const IOOptions& options,
1242
+ bool* is_dir, IODebugContext* dbg) override {
1243
+ return target_->IsDirectory(path, options, is_dir, dbg);
1244
+ }
1245
+
1246
+ private:
1247
+ std::shared_ptr<FileSystem> target_;
1248
+ };
1249
+
1250
+ class FSSequentialFileWrapper : public FSSequentialFile {
1251
+ public:
1252
+ explicit FSSequentialFileWrapper(FSSequentialFile* t) : target_(t) {}
1253
+
1254
+ FSSequentialFile* target() const { return target_; }
1255
+
1256
+ IOStatus Read(size_t n, const IOOptions& options, Slice* result,
1257
+ char* scratch, IODebugContext* dbg) override {
1258
+ return target_->Read(n, options, result, scratch, dbg);
1259
+ }
1260
+ IOStatus Skip(uint64_t n) override { return target_->Skip(n); }
1261
+ bool use_direct_io() const override { return target_->use_direct_io(); }
1262
+ size_t GetRequiredBufferAlignment() const override {
1263
+ return target_->GetRequiredBufferAlignment();
1264
+ }
1265
+ IOStatus InvalidateCache(size_t offset, size_t length) override {
1266
+ return target_->InvalidateCache(offset, length);
1267
+ }
1268
+ IOStatus PositionedRead(uint64_t offset, size_t n, const IOOptions& options,
1269
+ Slice* result, char* scratch,
1270
+ IODebugContext* dbg) override {
1271
+ return target_->PositionedRead(offset, n, options, result, scratch, dbg);
1272
+ }
1273
+
1274
+ private:
1275
+ FSSequentialFile* target_;
1276
+ };
1277
+
1278
+ class FSRandomAccessFileWrapper : public FSRandomAccessFile {
1279
+ public:
1280
+ explicit FSRandomAccessFileWrapper(FSRandomAccessFile* t) : target_(t) {}
1281
+
1282
+ FSRandomAccessFile* target() const { return target_; }
1283
+
1284
+ IOStatus Read(uint64_t offset, size_t n, const IOOptions& options,
1285
+ Slice* result, char* scratch,
1286
+ IODebugContext* dbg) const override {
1287
+ return target_->Read(offset, n, options, result, scratch, dbg);
1288
+ }
1289
+ IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs,
1290
+ const IOOptions& options, IODebugContext* dbg) override {
1291
+ return target_->MultiRead(reqs, num_reqs, options, dbg);
1292
+ }
1293
+ IOStatus Prefetch(uint64_t offset, size_t n, const IOOptions& options,
1294
+ IODebugContext* dbg) override {
1295
+ return target_->Prefetch(offset, n, options, dbg);
1296
+ }
1297
+ size_t GetUniqueId(char* id, size_t max_size) const override {
1298
+ return target_->GetUniqueId(id, max_size);
1299
+ };
1300
+ void Hint(AccessPattern pattern) override { target_->Hint(pattern); }
1301
+ bool use_direct_io() const override { return target_->use_direct_io(); }
1302
+ size_t GetRequiredBufferAlignment() const override {
1303
+ return target_->GetRequiredBufferAlignment();
1304
+ }
1305
+ IOStatus InvalidateCache(size_t offset, size_t length) override {
1306
+ return target_->InvalidateCache(offset, length);
1307
+ }
1308
+
1309
+ private:
1310
+ FSRandomAccessFile* target_;
1311
+ };
1312
+
1313
+ class FSWritableFileWrapper : public FSWritableFile {
1314
+ public:
1315
+ explicit FSWritableFileWrapper(FSWritableFile* t) : target_(t) {}
1316
+
1317
+ FSWritableFile* target() const { return target_; }
1318
+
1319
+ IOStatus Append(const Slice& data, const IOOptions& options,
1320
+ IODebugContext* dbg) override {
1321
+ return target_->Append(data, options, dbg);
1322
+ }
1323
+ IOStatus Append(const Slice& data, const IOOptions& options,
1324
+ const DataVerificationInfo& verification_info,
1325
+ IODebugContext* dbg) override {
1326
+ return target_->Append(data, options, verification_info, dbg);
1327
+ }
1328
+ IOStatus PositionedAppend(const Slice& data, uint64_t offset,
1329
+ const IOOptions& options,
1330
+ IODebugContext* dbg) override {
1331
+ return target_->PositionedAppend(data, offset, options, dbg);
1332
+ }
1333
+ IOStatus PositionedAppend(const Slice& data, uint64_t offset,
1334
+ const IOOptions& options,
1335
+ const DataVerificationInfo& verification_info,
1336
+ IODebugContext* dbg) override {
1337
+ return target_->PositionedAppend(data, offset, options, verification_info,
1338
+ dbg);
1339
+ }
1340
+ IOStatus Truncate(uint64_t size, const IOOptions& options,
1341
+ IODebugContext* dbg) override {
1342
+ return target_->Truncate(size, options, dbg);
1343
+ }
1344
+ IOStatus Close(const IOOptions& options, IODebugContext* dbg) override {
1345
+ return target_->Close(options, dbg);
1346
+ }
1347
+ IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override {
1348
+ return target_->Flush(options, dbg);
1349
+ }
1350
+ IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override {
1351
+ return target_->Sync(options, dbg);
1352
+ }
1353
+ IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override {
1354
+ return target_->Fsync(options, dbg);
1355
+ }
1356
+ bool IsSyncThreadSafe() const override { return target_->IsSyncThreadSafe(); }
1357
+
1358
+ bool use_direct_io() const override { return target_->use_direct_io(); }
1359
+
1360
+ size_t GetRequiredBufferAlignment() const override {
1361
+ return target_->GetRequiredBufferAlignment();
1362
+ }
1363
+
1364
+ void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) override {
1365
+ target_->SetWriteLifeTimeHint(hint);
1366
+ }
1367
+
1368
+ Env::WriteLifeTimeHint GetWriteLifeTimeHint() override {
1369
+ return target_->GetWriteLifeTimeHint();
1370
+ }
1371
+
1372
+ uint64_t GetFileSize(const IOOptions& options, IODebugContext* dbg) override {
1373
+ return target_->GetFileSize(options, dbg);
1374
+ }
1375
+
1376
+ void SetPreallocationBlockSize(size_t size) override {
1377
+ target_->SetPreallocationBlockSize(size);
1378
+ }
1379
+
1380
+ void GetPreallocationStatus(size_t* block_size,
1381
+ size_t* last_allocated_block) override {
1382
+ target_->GetPreallocationStatus(block_size, last_allocated_block);
1383
+ }
1384
+
1385
+ size_t GetUniqueId(char* id, size_t max_size) const override {
1386
+ return target_->GetUniqueId(id, max_size);
1387
+ }
1388
+
1389
+ IOStatus InvalidateCache(size_t offset, size_t length) override {
1390
+ return target_->InvalidateCache(offset, length);
1391
+ }
1392
+
1393
+ IOStatus RangeSync(uint64_t offset, uint64_t nbytes, const IOOptions& options,
1394
+ IODebugContext* dbg) override {
1395
+ return target_->RangeSync(offset, nbytes, options, dbg);
1396
+ }
1397
+
1398
+ void PrepareWrite(size_t offset, size_t len, const IOOptions& options,
1399
+ IODebugContext* dbg) override {
1400
+ target_->PrepareWrite(offset, len, options, dbg);
1401
+ }
1402
+
1403
+ IOStatus Allocate(uint64_t offset, uint64_t len, const IOOptions& options,
1404
+ IODebugContext* dbg) override {
1405
+ return target_->Allocate(offset, len, options, dbg);
1406
+ }
1407
+
1408
+ private:
1409
+ FSWritableFile* target_;
1410
+ };
1411
+
1412
+ class FSRandomRWFileWrapper : public FSRandomRWFile {
1413
+ public:
1414
+ explicit FSRandomRWFileWrapper(FSRandomRWFile* t) : target_(t) {}
1415
+
1416
+ FSRandomRWFile* target() const { return target_; }
1417
+
1418
+ bool use_direct_io() const override { return target_->use_direct_io(); }
1419
+ size_t GetRequiredBufferAlignment() const override {
1420
+ return target_->GetRequiredBufferAlignment();
1421
+ }
1422
+ IOStatus Write(uint64_t offset, const Slice& data, const IOOptions& options,
1423
+ IODebugContext* dbg) override {
1424
+ return target_->Write(offset, data, options, dbg);
1425
+ }
1426
+ IOStatus Read(uint64_t offset, size_t n, const IOOptions& options,
1427
+ Slice* result, char* scratch,
1428
+ IODebugContext* dbg) const override {
1429
+ return target_->Read(offset, n, options, result, scratch, dbg);
1430
+ }
1431
+ IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override {
1432
+ return target_->Flush(options, dbg);
1433
+ }
1434
+ IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override {
1435
+ return target_->Sync(options, dbg);
1436
+ }
1437
+ IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override {
1438
+ return target_->Fsync(options, dbg);
1439
+ }
1440
+ IOStatus Close(const IOOptions& options, IODebugContext* dbg) override {
1441
+ return target_->Close(options, dbg);
1442
+ }
1443
+
1444
+ private:
1445
+ FSRandomRWFile* target_;
1446
+ };
1447
+
1448
+ class FSDirectoryWrapper : public FSDirectory {
1449
+ public:
1450
+ explicit FSDirectoryWrapper(FSDirectory* t) : target_(t) {}
1451
+
1452
+ IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override {
1453
+ return target_->Fsync(options, dbg);
1454
+ }
1455
+ size_t GetUniqueId(char* id, size_t max_size) const override {
1456
+ return target_->GetUniqueId(id, max_size);
1457
+ }
1458
+
1459
+ private:
1460
+ FSDirectory* target_;
1461
+ };
1462
+
1463
+ // A utility routine: write "data" to the named file.
1464
+ extern IOStatus WriteStringToFile(FileSystem* fs, const Slice& data,
1465
+ const std::string& fname,
1466
+ bool should_sync = false);
1467
+
1468
+ // A utility routine: read contents of named file into *data
1469
+ extern IOStatus ReadFileToString(FileSystem* fs, const std::string& fname,
1470
+ std::string* data);
1471
+
1472
+ } // namespace ROCKSDB_NAMESPACE