rn-leveldb 3.11.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 (595) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +92 -0
  3. package/android/.project +34 -0
  4. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  5. package/android/CMakeLists.txt +69 -0
  6. package/android/build.gradle +125 -0
  7. package/android/cpp-adapter.cpp +19 -0
  8. package/android/gradle.properties +6 -0
  9. package/android/src/main/AndroidManifest.xml +4 -0
  10. package/android/src/main/java/com/reactnativeleveldb/LeveldbModule.java +57 -0
  11. package/android/src/main/java/com/reactnativeleveldb/LeveldbPackage.java +28 -0
  12. package/cpp/leveldb/.appveyor.yml +36 -0
  13. package/cpp/leveldb/.clang-format +18 -0
  14. package/cpp/leveldb/.travis.yml +88 -0
  15. package/cpp/leveldb/AUTHORS +12 -0
  16. package/cpp/leveldb/CMakeLists.txt +495 -0
  17. package/cpp/leveldb/CONTRIBUTING.md +36 -0
  18. package/cpp/leveldb/LICENSE +27 -0
  19. package/cpp/leveldb/NEWS +17 -0
  20. package/cpp/leveldb/README.md +231 -0
  21. package/cpp/leveldb/TODO +14 -0
  22. package/cpp/leveldb/benchmarks/db_bench.cc +990 -0
  23. package/cpp/leveldb/benchmarks/db_bench_sqlite3.cc +726 -0
  24. package/cpp/leveldb/benchmarks/db_bench_tree_db.cc +531 -0
  25. package/cpp/leveldb/cmake/leveldbConfig.cmake.in +9 -0
  26. package/cpp/leveldb/db/autocompact_test.cc +115 -0
  27. package/cpp/leveldb/db/builder.cc +82 -0
  28. package/cpp/leveldb/db/builder.h +30 -0
  29. package/cpp/leveldb/db/c.cc +562 -0
  30. package/cpp/leveldb/db/c_test.c +384 -0
  31. package/cpp/leveldb/db/corruption_test.cc +367 -0
  32. package/cpp/leveldb/db/db_impl.cc +1554 -0
  33. package/cpp/leveldb/db/db_impl.h +217 -0
  34. package/cpp/leveldb/db/db_iter.cc +318 -0
  35. package/cpp/leveldb/db/db_iter.h +26 -0
  36. package/cpp/leveldb/db/db_test.cc +2305 -0
  37. package/cpp/leveldb/db/dbformat.cc +136 -0
  38. package/cpp/leveldb/db/dbformat.h +224 -0
  39. package/cpp/leveldb/db/dbformat_test.cc +133 -0
  40. package/cpp/leveldb/db/dumpfile.cc +232 -0
  41. package/cpp/leveldb/db/fault_injection_test.cc +555 -0
  42. package/cpp/leveldb/db/filename.cc +141 -0
  43. package/cpp/leveldb/db/filename.h +83 -0
  44. package/cpp/leveldb/db/filename_test.cc +132 -0
  45. package/cpp/leveldb/db/leveldbutil.cc +64 -0
  46. package/cpp/leveldb/db/log_format.h +35 -0
  47. package/cpp/leveldb/db/log_reader.cc +274 -0
  48. package/cpp/leveldb/db/log_reader.h +112 -0
  49. package/cpp/leveldb/db/log_test.cc +563 -0
  50. package/cpp/leveldb/db/log_writer.cc +111 -0
  51. package/cpp/leveldb/db/log_writer.h +54 -0
  52. package/cpp/leveldb/db/memtable.cc +137 -0
  53. package/cpp/leveldb/db/memtable.h +87 -0
  54. package/cpp/leveldb/db/recovery_test.cc +339 -0
  55. package/cpp/leveldb/db/repair.cc +451 -0
  56. package/cpp/leveldb/db/skiplist.h +382 -0
  57. package/cpp/leveldb/db/skiplist_test.cc +373 -0
  58. package/cpp/leveldb/db/snapshot.h +95 -0
  59. package/cpp/leveldb/db/table_cache.cc +120 -0
  60. package/cpp/leveldb/db/table_cache.h +57 -0
  61. package/cpp/leveldb/db/version_edit.cc +257 -0
  62. package/cpp/leveldb/db/version_edit.h +106 -0
  63. package/cpp/leveldb/db/version_edit_test.cc +46 -0
  64. package/cpp/leveldb/db/version_set.cc +1562 -0
  65. package/cpp/leveldb/db/version_set.h +393 -0
  66. package/cpp/leveldb/db/version_set_test.cc +336 -0
  67. package/cpp/leveldb/db/write_batch.cc +150 -0
  68. package/cpp/leveldb/db/write_batch_internal.h +45 -0
  69. package/cpp/leveldb/db/write_batch_test.cc +137 -0
  70. package/cpp/leveldb/doc/benchmark.html +459 -0
  71. package/cpp/leveldb/doc/impl.md +172 -0
  72. package/cpp/leveldb/doc/index.md +523 -0
  73. package/cpp/leveldb/doc/log_format.md +75 -0
  74. package/cpp/leveldb/doc/table_format.md +107 -0
  75. package/cpp/leveldb/helpers/memenv/memenv.cc +390 -0
  76. package/cpp/leveldb/helpers/memenv/memenv.h +22 -0
  77. package/cpp/leveldb/helpers/memenv/memenv_test.cc +264 -0
  78. package/cpp/leveldb/include/leveldb/c.h +270 -0
  79. package/cpp/leveldb/include/leveldb/cache.h +111 -0
  80. package/cpp/leveldb/include/leveldb/comparator.h +64 -0
  81. package/cpp/leveldb/include/leveldb/db.h +167 -0
  82. package/cpp/leveldb/include/leveldb/dumpfile.h +28 -0
  83. package/cpp/leveldb/include/leveldb/env.h +417 -0
  84. package/cpp/leveldb/include/leveldb/export.h +33 -0
  85. package/cpp/leveldb/include/leveldb/filter_policy.h +72 -0
  86. package/cpp/leveldb/include/leveldb/iterator.h +112 -0
  87. package/cpp/leveldb/include/leveldb/options.h +187 -0
  88. package/cpp/leveldb/include/leveldb/slice.h +114 -0
  89. package/cpp/leveldb/include/leveldb/status.h +122 -0
  90. package/cpp/leveldb/include/leveldb/table.h +84 -0
  91. package/cpp/leveldb/include/leveldb/table_builder.h +93 -0
  92. package/cpp/leveldb/include/leveldb/write_batch.h +83 -0
  93. package/cpp/leveldb/issues/issue178_test.cc +90 -0
  94. package/cpp/leveldb/issues/issue200_test.cc +59 -0
  95. package/cpp/leveldb/issues/issue320_test.cc +131 -0
  96. package/cpp/leveldb/port/README.md +10 -0
  97. package/cpp/leveldb/port/port.h +19 -0
  98. package/cpp/leveldb/port/port_config.h.in +33 -0
  99. package/cpp/leveldb/port/port_example.h +100 -0
  100. package/cpp/leveldb/port/port_stdcxx.h +151 -0
  101. package/cpp/leveldb/port/thread_annotations.h +108 -0
  102. package/cpp/leveldb/table/block.cc +267 -0
  103. package/cpp/leveldb/table/block.h +44 -0
  104. package/cpp/leveldb/table/block_builder.cc +107 -0
  105. package/cpp/leveldb/table/block_builder.h +54 -0
  106. package/cpp/leveldb/table/filter_block.cc +106 -0
  107. package/cpp/leveldb/table/filter_block.h +68 -0
  108. package/cpp/leveldb/table/filter_block_test.cc +127 -0
  109. package/cpp/leveldb/table/format.cc +141 -0
  110. package/cpp/leveldb/table/format.h +99 -0
  111. package/cpp/leveldb/table/iterator.cc +76 -0
  112. package/cpp/leveldb/table/iterator_wrapper.h +92 -0
  113. package/cpp/leveldb/table/merger.cc +191 -0
  114. package/cpp/leveldb/table/merger.h +26 -0
  115. package/cpp/leveldb/table/table.cc +271 -0
  116. package/cpp/leveldb/table/table_builder.cc +265 -0
  117. package/cpp/leveldb/table/table_test.cc +834 -0
  118. package/cpp/leveldb/table/two_level_iterator.cc +171 -0
  119. package/cpp/leveldb/table/two_level_iterator.h +31 -0
  120. package/cpp/leveldb/third_party/benchmark/.clang-format +5 -0
  121. package/cpp/leveldb/third_party/benchmark/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
  122. package/cpp/leveldb/third_party/benchmark/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  123. package/cpp/leveldb/third_party/benchmark/.github/workflows/build-and-test.yml +38 -0
  124. package/cpp/leveldb/third_party/benchmark/.github/workflows/pylint.yml +26 -0
  125. package/cpp/leveldb/third_party/benchmark/.github/workflows/test_bindings.yml +24 -0
  126. package/cpp/leveldb/third_party/benchmark/.travis-libcxx-setup.sh +28 -0
  127. package/cpp/leveldb/third_party/benchmark/.travis.yml +231 -0
  128. package/cpp/leveldb/third_party/benchmark/.ycm_extra_conf.py +115 -0
  129. package/cpp/leveldb/third_party/benchmark/AUTHORS +58 -0
  130. package/cpp/leveldb/third_party/benchmark/BUILD.bazel +44 -0
  131. package/cpp/leveldb/third_party/benchmark/CMakeLists.txt +287 -0
  132. package/cpp/leveldb/third_party/benchmark/CONTRIBUTING.md +58 -0
  133. package/cpp/leveldb/third_party/benchmark/CONTRIBUTORS +83 -0
  134. package/cpp/leveldb/third_party/benchmark/LICENSE +202 -0
  135. package/cpp/leveldb/third_party/benchmark/README.md +1323 -0
  136. package/cpp/leveldb/third_party/benchmark/WORKSPACE +51 -0
  137. package/cpp/leveldb/third_party/benchmark/_config.yml +1 -0
  138. package/cpp/leveldb/third_party/benchmark/appveyor.yml +50 -0
  139. package/cpp/leveldb/third_party/benchmark/bindings/python/BUILD +3 -0
  140. package/cpp/leveldb/third_party/benchmark/bindings/python/build_defs.bzl +25 -0
  141. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/BUILD +38 -0
  142. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/__init__.py +156 -0
  143. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/benchmark.cc +180 -0
  144. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/example.py +136 -0
  145. package/cpp/leveldb/third_party/benchmark/bindings/python/pybind11.BUILD +20 -0
  146. package/cpp/leveldb/third_party/benchmark/bindings/python/python_headers.BUILD +6 -0
  147. package/cpp/leveldb/third_party/benchmark/bindings/python/requirements.txt +2 -0
  148. package/cpp/leveldb/third_party/benchmark/cmake/AddCXXCompilerFlag.cmake +74 -0
  149. package/cpp/leveldb/third_party/benchmark/cmake/CXXFeatureCheck.cmake +69 -0
  150. package/cpp/leveldb/third_party/benchmark/cmake/Config.cmake.in +1 -0
  151. package/cpp/leveldb/third_party/benchmark/cmake/GetGitVersion.cmake +54 -0
  152. package/cpp/leveldb/third_party/benchmark/cmake/GoogleTest.cmake +41 -0
  153. package/cpp/leveldb/third_party/benchmark/cmake/GoogleTest.cmake.in +58 -0
  154. package/cpp/leveldb/third_party/benchmark/cmake/benchmark.pc.in +12 -0
  155. package/cpp/leveldb/third_party/benchmark/cmake/gnu_posix_regex.cpp +12 -0
  156. package/cpp/leveldb/third_party/benchmark/cmake/llvm-toolchain.cmake +8 -0
  157. package/cpp/leveldb/third_party/benchmark/cmake/posix_regex.cpp +14 -0
  158. package/cpp/leveldb/third_party/benchmark/cmake/split_list.cmake +3 -0
  159. package/cpp/leveldb/third_party/benchmark/cmake/std_regex.cpp +10 -0
  160. package/cpp/leveldb/third_party/benchmark/cmake/steady_clock.cpp +7 -0
  161. package/cpp/leveldb/third_party/benchmark/cmake/thread_safety_attributes.cpp +4 -0
  162. package/cpp/leveldb/third_party/benchmark/conan/CMakeLists.txt +7 -0
  163. package/cpp/leveldb/third_party/benchmark/conan/test_package/CMakeLists.txt +10 -0
  164. package/cpp/leveldb/third_party/benchmark/conan/test_package/conanfile.py +19 -0
  165. package/cpp/leveldb/third_party/benchmark/conan/test_package/test_package.cpp +18 -0
  166. package/cpp/leveldb/third_party/benchmark/conanfile.py +79 -0
  167. package/cpp/leveldb/third_party/benchmark/dependencies.md +18 -0
  168. package/cpp/leveldb/third_party/benchmark/docs/AssemblyTests.md +147 -0
  169. package/cpp/leveldb/third_party/benchmark/docs/_config.yml +1 -0
  170. package/cpp/leveldb/third_party/benchmark/docs/releasing.md +16 -0
  171. package/cpp/leveldb/third_party/benchmark/docs/tools.md +203 -0
  172. package/cpp/leveldb/third_party/benchmark/include/benchmark/benchmark.h +1604 -0
  173. package/cpp/leveldb/third_party/benchmark/requirements.txt +2 -0
  174. package/cpp/leveldb/third_party/benchmark/setup.py +140 -0
  175. package/cpp/leveldb/third_party/benchmark/src/CMakeLists.txt +114 -0
  176. package/cpp/leveldb/third_party/benchmark/src/arraysize.h +33 -0
  177. package/cpp/leveldb/third_party/benchmark/src/benchmark.cc +499 -0
  178. package/cpp/leveldb/third_party/benchmark/src/benchmark_api_internal.cc +15 -0
  179. package/cpp/leveldb/third_party/benchmark/src/benchmark_api_internal.h +53 -0
  180. package/cpp/leveldb/third_party/benchmark/src/benchmark_main.cc +17 -0
  181. package/cpp/leveldb/third_party/benchmark/src/benchmark_name.cc +58 -0
  182. package/cpp/leveldb/third_party/benchmark/src/benchmark_register.cc +515 -0
  183. package/cpp/leveldb/third_party/benchmark/src/benchmark_register.h +108 -0
  184. package/cpp/leveldb/third_party/benchmark/src/benchmark_runner.cc +362 -0
  185. package/cpp/leveldb/third_party/benchmark/src/benchmark_runner.h +51 -0
  186. package/cpp/leveldb/third_party/benchmark/src/check.h +82 -0
  187. package/cpp/leveldb/third_party/benchmark/src/colorprint.cc +188 -0
  188. package/cpp/leveldb/third_party/benchmark/src/colorprint.h +33 -0
  189. package/cpp/leveldb/third_party/benchmark/src/commandlineflags.cc +228 -0
  190. package/cpp/leveldb/third_party/benchmark/src/commandlineflags.h +103 -0
  191. package/cpp/leveldb/third_party/benchmark/src/complexity.cc +238 -0
  192. package/cpp/leveldb/third_party/benchmark/src/complexity.h +55 -0
  193. package/cpp/leveldb/third_party/benchmark/src/console_reporter.cc +177 -0
  194. package/cpp/leveldb/third_party/benchmark/src/counter.cc +80 -0
  195. package/cpp/leveldb/third_party/benchmark/src/counter.h +32 -0
  196. package/cpp/leveldb/third_party/benchmark/src/csv_reporter.cc +154 -0
  197. package/cpp/leveldb/third_party/benchmark/src/cycleclock.h +211 -0
  198. package/cpp/leveldb/third_party/benchmark/src/internal_macros.h +102 -0
  199. package/cpp/leveldb/third_party/benchmark/src/json_reporter.cc +255 -0
  200. package/cpp/leveldb/third_party/benchmark/src/log.h +74 -0
  201. package/cpp/leveldb/third_party/benchmark/src/mutex.h +155 -0
  202. package/cpp/leveldb/third_party/benchmark/src/re.h +158 -0
  203. package/cpp/leveldb/third_party/benchmark/src/reporter.cc +105 -0
  204. package/cpp/leveldb/third_party/benchmark/src/sleep.cc +67 -0
  205. package/cpp/leveldb/third_party/benchmark/src/sleep.h +15 -0
  206. package/cpp/leveldb/third_party/benchmark/src/statistics.cc +193 -0
  207. package/cpp/leveldb/third_party/benchmark/src/statistics.h +37 -0
  208. package/cpp/leveldb/third_party/benchmark/src/string_util.cc +255 -0
  209. package/cpp/leveldb/third_party/benchmark/src/string_util.h +59 -0
  210. package/cpp/leveldb/third_party/benchmark/src/sysinfo.cc +716 -0
  211. package/cpp/leveldb/third_party/benchmark/src/thread_manager.h +64 -0
  212. package/cpp/leveldb/third_party/benchmark/src/thread_timer.h +86 -0
  213. package/cpp/leveldb/third_party/benchmark/src/timers.cc +245 -0
  214. package/cpp/leveldb/third_party/benchmark/src/timers.h +48 -0
  215. package/cpp/leveldb/third_party/benchmark/test/AssemblyTests.cmake +46 -0
  216. package/cpp/leveldb/third_party/benchmark/test/BUILD +73 -0
  217. package/cpp/leveldb/third_party/benchmark/test/CMakeLists.txt +263 -0
  218. package/cpp/leveldb/third_party/benchmark/test/args_product_test.cc +77 -0
  219. package/cpp/leveldb/third_party/benchmark/test/basic_test.cc +136 -0
  220. package/cpp/leveldb/third_party/benchmark/test/benchmark_gtest.cc +134 -0
  221. package/cpp/leveldb/third_party/benchmark/test/benchmark_name_gtest.cc +74 -0
  222. package/cpp/leveldb/third_party/benchmark/test/benchmark_test.cc +245 -0
  223. package/cpp/leveldb/third_party/benchmark/test/clobber_memory_assembly_test.cc +64 -0
  224. package/cpp/leveldb/third_party/benchmark/test/commandlineflags_gtest.cc +201 -0
  225. package/cpp/leveldb/third_party/benchmark/test/complexity_test.cc +213 -0
  226. package/cpp/leveldb/third_party/benchmark/test/cxx03_test.cc +63 -0
  227. package/cpp/leveldb/third_party/benchmark/test/diagnostics_test.cc +80 -0
  228. package/cpp/leveldb/third_party/benchmark/test/display_aggregates_only_test.cc +43 -0
  229. package/cpp/leveldb/third_party/benchmark/test/donotoptimize_assembly_test.cc +163 -0
  230. package/cpp/leveldb/third_party/benchmark/test/donotoptimize_test.cc +52 -0
  231. package/cpp/leveldb/third_party/benchmark/test/filter_test.cc +104 -0
  232. package/cpp/leveldb/third_party/benchmark/test/fixture_test.cc +51 -0
  233. package/cpp/leveldb/third_party/benchmark/test/internal_threading_test.cc +184 -0
  234. package/cpp/leveldb/third_party/benchmark/test/link_main_test.cc +8 -0
  235. package/cpp/leveldb/third_party/benchmark/test/map_test.cc +57 -0
  236. package/cpp/leveldb/third_party/benchmark/test/memory_manager_test.cc +44 -0
  237. package/cpp/leveldb/third_party/benchmark/test/multiple_ranges_test.cc +96 -0
  238. package/cpp/leveldb/third_party/benchmark/test/options_test.cc +75 -0
  239. package/cpp/leveldb/third_party/benchmark/test/output_test.h +213 -0
  240. package/cpp/leveldb/third_party/benchmark/test/output_test_helper.cc +515 -0
  241. package/cpp/leveldb/third_party/benchmark/test/register_benchmark_test.cc +184 -0
  242. package/cpp/leveldb/third_party/benchmark/test/report_aggregates_only_test.cc +39 -0
  243. package/cpp/leveldb/third_party/benchmark/test/reporter_output_test.cc +747 -0
  244. package/cpp/leveldb/third_party/benchmark/test/skip_with_error_test.cc +195 -0
  245. package/cpp/leveldb/third_party/benchmark/test/state_assembly_test.cc +68 -0
  246. package/cpp/leveldb/third_party/benchmark/test/statistics_gtest.cc +28 -0
  247. package/cpp/leveldb/third_party/benchmark/test/string_util_gtest.cc +153 -0
  248. package/cpp/leveldb/third_party/benchmark/test/templated_fixture_test.cc +28 -0
  249. package/cpp/leveldb/third_party/benchmark/test/user_counters_tabular_test.cc +285 -0
  250. package/cpp/leveldb/third_party/benchmark/test/user_counters_test.cc +531 -0
  251. package/cpp/leveldb/third_party/benchmark/test/user_counters_thousands_test.cc +173 -0
  252. package/cpp/leveldb/third_party/benchmark/tools/BUILD.bazel +19 -0
  253. package/cpp/leveldb/third_party/benchmark/tools/compare.py +429 -0
  254. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test1_run1.json +119 -0
  255. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test1_run2.json +119 -0
  256. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test2_run.json +81 -0
  257. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test3_run0.json +65 -0
  258. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test3_run1.json +65 -0
  259. package/cpp/leveldb/third_party/benchmark/tools/gbench/__init__.py +8 -0
  260. package/cpp/leveldb/third_party/benchmark/tools/gbench/report.py +903 -0
  261. package/cpp/leveldb/third_party/benchmark/tools/gbench/util.py +163 -0
  262. package/cpp/leveldb/third_party/benchmark/tools/requirements.txt +1 -0
  263. package/cpp/leveldb/third_party/benchmark/tools/strip_asm.py +151 -0
  264. package/cpp/leveldb/third_party/googletest/.clang-format +4 -0
  265. package/cpp/leveldb/third_party/googletest/.travis.yml +73 -0
  266. package/cpp/leveldb/third_party/googletest/BUILD.bazel +179 -0
  267. package/cpp/leveldb/third_party/googletest/CMakeLists.txt +36 -0
  268. package/cpp/leveldb/third_party/googletest/CONTRIBUTING.md +142 -0
  269. package/cpp/leveldb/third_party/googletest/LICENSE +28 -0
  270. package/cpp/leveldb/third_party/googletest/README.md +132 -0
  271. package/cpp/leveldb/third_party/googletest/WORKSPACE +23 -0
  272. package/cpp/leveldb/third_party/googletest/appveyor.yml +154 -0
  273. package/cpp/leveldb/third_party/googletest/ci/build-linux-bazel.sh +37 -0
  274. package/cpp/leveldb/third_party/googletest/ci/build-platformio.sh +2 -0
  275. package/cpp/leveldb/third_party/googletest/ci/env-linux.sh +41 -0
  276. package/cpp/leveldb/third_party/googletest/ci/env-osx.sh +47 -0
  277. package/cpp/leveldb/third_party/googletest/ci/get-nprocessors.sh +48 -0
  278. package/cpp/leveldb/third_party/googletest/ci/install-linux.sh +49 -0
  279. package/cpp/leveldb/third_party/googletest/ci/install-osx.sh +40 -0
  280. package/cpp/leveldb/third_party/googletest/ci/install-platformio.sh +5 -0
  281. package/cpp/leveldb/third_party/googletest/ci/log-config.sh +51 -0
  282. package/cpp/leveldb/third_party/googletest/ci/travis.sh +44 -0
  283. package/cpp/leveldb/third_party/googletest/googlemock/CMakeLists.txt +233 -0
  284. package/cpp/leveldb/third_party/googletest/googlemock/CONTRIBUTORS +40 -0
  285. package/cpp/leveldb/third_party/googletest/googlemock/LICENSE +28 -0
  286. package/cpp/leveldb/third_party/googletest/googlemock/README.md +44 -0
  287. package/cpp/leveldb/third_party/googletest/googlemock/cmake/gmock.pc.in +10 -0
  288. package/cpp/leveldb/third_party/googletest/googlemock/cmake/gmock_main.pc.in +10 -0
  289. package/cpp/leveldb/third_party/googletest/googlemock/docs/cheat_sheet.md +770 -0
  290. package/cpp/leveldb/third_party/googletest/googlemock/docs/cook_book.md +4270 -0
  291. package/cpp/leveldb/third_party/googletest/googlemock/docs/for_dummies.md +700 -0
  292. package/cpp/leveldb/third_party/googletest/googlemock/docs/gmock_faq.md +396 -0
  293. package/cpp/leveldb/third_party/googletest/googlemock/docs/pump_manual.md +187 -0
  294. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-actions.h +1193 -0
  295. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-cardinalities.h +157 -0
  296. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-function-mocker.h +276 -0
  297. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-actions.h +1884 -0
  298. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump +627 -0
  299. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h +752 -0
  300. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +227 -0
  301. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-matchers.h +1097 -0
  302. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump +346 -0
  303. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-matchers.h +4591 -0
  304. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-more-actions.h +162 -0
  305. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-more-matchers.h +92 -0
  306. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-nice-strict.h +215 -0
  307. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-spec-builders.h +1985 -0
  308. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock.h +101 -0
  309. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/README.md +16 -0
  310. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +10 -0
  311. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +12 -0
  312. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +36 -0
  313. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +39 -0
  314. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +472 -0
  315. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-port.h +87 -0
  316. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-pp.h +271 -0
  317. package/cpp/leveldb/third_party/googletest/googlemock/scripts/README.md +5 -0
  318. package/cpp/leveldb/third_party/googletest/googlemock/scripts/fuse_gmock_files.py +240 -0
  319. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/LICENSE +203 -0
  320. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/README +34 -0
  321. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/README.cppclean +115 -0
  322. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  323. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/ast.py +1761 -0
  324. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class.py +248 -0
  325. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py +540 -0
  326. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/keywords.py +56 -0
  327. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/tokenize.py +284 -0
  328. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/utils.py +37 -0
  329. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/gmock_gen.py +30 -0
  330. package/cpp/leveldb/third_party/googletest/googlemock/scripts/pump.py +856 -0
  331. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-all.cc +46 -0
  332. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-cardinalities.cc +155 -0
  333. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-internal-utils.cc +200 -0
  334. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-matchers.cc +462 -0
  335. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-spec-builders.cc +892 -0
  336. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock.cc +213 -0
  337. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock_main.cc +72 -0
  338. package/cpp/leveldb/third_party/googletest/googlemock/test/BUILD.bazel +110 -0
  339. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-actions_test.cc +1507 -0
  340. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-cardinalities_test.cc +429 -0
  341. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_nc.cc +16 -0
  342. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_nc_test.py +43 -0
  343. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_test.cc +696 -0
  344. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-actions_test.cc +1064 -0
  345. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-function-mockers_test.cc +659 -0
  346. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-matchers_test.cc +1323 -0
  347. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-internal-utils_test.cc +732 -0
  348. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-matchers_test.cc +6913 -0
  349. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-more-actions_test.cc +698 -0
  350. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-nice-strict_test.cc +500 -0
  351. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-port_test.cc +42 -0
  352. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-pp-string_test.cc +206 -0
  353. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-pp_test.cc +83 -0
  354. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-spec-builders_test.cc +2775 -0
  355. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_all_test.cc +49 -0
  356. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_ex_test.cc +80 -0
  357. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_leak_test.py +104 -0
  358. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_leak_test_.cc +99 -0
  359. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link2_test.cc +39 -0
  360. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link_test.cc +39 -0
  361. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link_test.h +690 -0
  362. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test.py +183 -0
  363. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test_.cc +309 -0
  364. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test_golden.txt +317 -0
  365. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_stress_test.cc +240 -0
  366. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_test.cc +181 -0
  367. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_test_utils.py +108 -0
  368. package/cpp/leveldb/third_party/googletest/googlemock/test/pump_test.py +182 -0
  369. package/cpp/leveldb/third_party/googletest/googletest/CMakeLists.txt +329 -0
  370. package/cpp/leveldb/third_party/googletest/googletest/CONTRIBUTORS +38 -0
  371. package/cpp/leveldb/third_party/googletest/googletest/LICENSE +28 -0
  372. package/cpp/leveldb/third_party/googletest/googletest/README.md +244 -0
  373. package/cpp/leveldb/third_party/googletest/googletest/cmake/Config.cmake.in +9 -0
  374. package/cpp/leveldb/third_party/googletest/googletest/cmake/gtest.pc.in +9 -0
  375. package/cpp/leveldb/third_party/googletest/googletest/cmake/gtest_main.pc.in +10 -0
  376. package/cpp/leveldb/third_party/googletest/googletest/cmake/internal_utils.cmake +358 -0
  377. package/cpp/leveldb/third_party/googletest/googletest/cmake/libgtest.la.in +21 -0
  378. package/cpp/leveldb/third_party/googletest/googletest/docs/advanced.md +2567 -0
  379. package/cpp/leveldb/third_party/googletest/googletest/docs/faq.md +753 -0
  380. package/cpp/leveldb/third_party/googletest/googletest/docs/pkgconfig.md +219 -0
  381. package/cpp/leveldb/third_party/googletest/googletest/docs/primer.md +579 -0
  382. package/cpp/leveldb/third_party/googletest/googletest/docs/samples.md +22 -0
  383. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-death-test.h +343 -0
  384. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-matchers.h +750 -0
  385. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-message.h +219 -0
  386. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-param-test.h +514 -0
  387. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-printers.h +928 -0
  388. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-spi.h +238 -0
  389. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-test-part.h +184 -0
  390. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-typed-test.h +337 -0
  391. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest.h +2477 -0
  392. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest_pred_impl.h +359 -0
  393. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest_prod.h +61 -0
  394. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/README.md +56 -0
  395. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest-port.h +37 -0
  396. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  397. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest.h +37 -0
  398. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +304 -0
  399. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-filepath.h +211 -0
  400. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-internal.h +1411 -0
  401. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h +880 -0
  402. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-port-arch.h +111 -0
  403. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-port.h +2227 -0
  404. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-string.h +171 -0
  405. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-type-util.h +183 -0
  406. package/cpp/leveldb/third_party/googletest/googletest/samples/prime_tables.h +126 -0
  407. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1.cc +66 -0
  408. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1.h +41 -0
  409. package/cpp/leveldb/third_party/googletest/googletest/samples/sample10_unittest.cc +139 -0
  410. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1_unittest.cc +151 -0
  411. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2.cc +54 -0
  412. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2.h +81 -0
  413. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2_unittest.cc +107 -0
  414. package/cpp/leveldb/third_party/googletest/googletest/samples/sample3-inl.h +172 -0
  415. package/cpp/leveldb/third_party/googletest/googletest/samples/sample3_unittest.cc +149 -0
  416. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4.cc +54 -0
  417. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4.h +53 -0
  418. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4_unittest.cc +53 -0
  419. package/cpp/leveldb/third_party/googletest/googletest/samples/sample5_unittest.cc +196 -0
  420. package/cpp/leveldb/third_party/googletest/googletest/samples/sample6_unittest.cc +224 -0
  421. package/cpp/leveldb/third_party/googletest/googletest/samples/sample7_unittest.cc +117 -0
  422. package/cpp/leveldb/third_party/googletest/googletest/samples/sample8_unittest.cc +154 -0
  423. package/cpp/leveldb/third_party/googletest/googletest/samples/sample9_unittest.cc +156 -0
  424. package/cpp/leveldb/third_party/googletest/googletest/scripts/README.md +5 -0
  425. package/cpp/leveldb/third_party/googletest/googletest/scripts/common.py +83 -0
  426. package/cpp/leveldb/third_party/googletest/googletest/scripts/fuse_gtest_files.py +253 -0
  427. package/cpp/leveldb/third_party/googletest/googletest/scripts/gen_gtest_pred_impl.py +734 -0
  428. package/cpp/leveldb/third_party/googletest/googletest/scripts/gtest-config.in +274 -0
  429. package/cpp/leveldb/third_party/googletest/googletest/scripts/release_docs.py +158 -0
  430. package/cpp/leveldb/third_party/googletest/googletest/scripts/run_with_path.py +32 -0
  431. package/cpp/leveldb/third_party/googletest/googletest/scripts/upload.py +1402 -0
  432. package/cpp/leveldb/third_party/googletest/googletest/scripts/upload_gtest.py +78 -0
  433. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-all.cc +48 -0
  434. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-death-test.cc +1653 -0
  435. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-filepath.cc +382 -0
  436. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-internal-inl.h +1211 -0
  437. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-matchers.cc +97 -0
  438. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-port.cc +1399 -0
  439. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-printers.cc +442 -0
  440. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-test-part.cc +108 -0
  441. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-typed-test.cc +118 -0
  442. package/cpp/leveldb/third_party/googletest/googletest/src/gtest.cc +6180 -0
  443. package/cpp/leveldb/third_party/googletest/googletest/src/gtest_main.cc +54 -0
  444. package/cpp/leveldb/third_party/googletest/googletest/test/BUILD.bazel +529 -0
  445. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-break-on-failure-unittest.py +208 -0
  446. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-break-on-failure-unittest_.cc +86 -0
  447. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-catch-exceptions-test.py +236 -0
  448. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-catch-exceptions-test_.cc +293 -0
  449. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-color-test.py +127 -0
  450. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-color-test_.cc +62 -0
  451. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-death-test-test.cc +1516 -0
  452. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-death-test_ex_test.cc +92 -0
  453. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-env-var-test.py +117 -0
  454. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-env-var-test_.cc +122 -0
  455. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filepath-test.cc +649 -0
  456. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filter-unittest.py +639 -0
  457. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filter-unittest_.cc +137 -0
  458. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-json-outfiles-test.py +191 -0
  459. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-json-output-unittest.py +778 -0
  460. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-list-tests-unittest.py +205 -0
  461. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-list-tests-unittest_.cc +156 -0
  462. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-listener-test.cc +518 -0
  463. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-message-test.cc +158 -0
  464. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-options-test.cc +216 -0
  465. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test-golden-lin.txt +1137 -0
  466. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test.py +346 -0
  467. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test_.cc +1149 -0
  468. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name1-test.py +63 -0
  469. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc +50 -0
  470. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name2-test.py +62 -0
  471. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc +55 -0
  472. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-test.cc +1086 -0
  473. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-test.h +51 -0
  474. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test2-test.cc +61 -0
  475. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-port-test.cc +1272 -0
  476. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-printers-test.cc +1619 -0
  477. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-shuffle-test.py +323 -0
  478. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-shuffle-test_.cc +101 -0
  479. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-test-part-test.cc +230 -0
  480. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-test2_test.cc +61 -0
  481. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-throw-on-failure-test.py +168 -0
  482. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-throw-on-failure-test_.cc +71 -0
  483. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-uninitialized-test.py +67 -0
  484. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-uninitialized-test_.cc +42 -0
  485. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test2_test.cc +44 -0
  486. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test_test.cc +462 -0
  487. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test_test.h +65 -0
  488. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-unittest-api_test.cc +341 -0
  489. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_all_test.cc +46 -0
  490. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_assert_by_exception_test.cc +116 -0
  491. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_environment_test.cc +188 -0
  492. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_help_test.py +170 -0
  493. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_help_test_.cc +45 -0
  494. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_json_test_utils.py +60 -0
  495. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_list_output_unittest.py +141 -0
  496. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_list_output_unittest_.cc +51 -0
  497. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_main_unittest.cc +44 -0
  498. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_no_test_unittest.cc +54 -0
  499. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
  500. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_premature_exit_test.cc +126 -0
  501. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_prod_test.cc +56 -0
  502. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_repeat_test.cc +233 -0
  503. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_check_output_test.py +59 -0
  504. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_environment_check_output_test.py +54 -0
  505. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc +49 -0
  506. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_test.cc +55 -0
  507. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_sole_header_test.cc +56 -0
  508. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_stress_test.cc +248 -0
  509. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc +89 -0
  510. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_test_utils.py +314 -0
  511. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_testbridge_test.py +63 -0
  512. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_testbridge_test_.cc +43 -0
  513. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc +90 -0
  514. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_unittest.cc +7496 -0
  515. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfile1_test_.cc +43 -0
  516. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfile2_test_.cc +43 -0
  517. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py +135 -0
  518. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_output_unittest.py +389 -0
  519. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_output_unittest_.cc +188 -0
  520. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_test_utils.py +196 -0
  521. package/cpp/leveldb/third_party/googletest/googletest/test/production.cc +35 -0
  522. package/cpp/leveldb/third_party/googletest/googletest/test/production.h +54 -0
  523. package/cpp/leveldb/third_party/googletest/library.json +66 -0
  524. package/cpp/leveldb/third_party/googletest/platformio.ini +47 -0
  525. package/cpp/leveldb/util/arena.cc +66 -0
  526. package/cpp/leveldb/util/arena.h +71 -0
  527. package/cpp/leveldb/util/arena_test.cc +66 -0
  528. package/cpp/leveldb/util/bloom.cc +92 -0
  529. package/cpp/leveldb/util/bloom_test.cc +159 -0
  530. package/cpp/leveldb/util/cache.cc +401 -0
  531. package/cpp/leveldb/util/cache_test.cc +229 -0
  532. package/cpp/leveldb/util/coding.cc +166 -0
  533. package/cpp/leveldb/util/coding.h +122 -0
  534. package/cpp/leveldb/util/coding_test.cc +198 -0
  535. package/cpp/leveldb/util/comparator.cc +75 -0
  536. package/cpp/leveldb/util/crc32c.cc +380 -0
  537. package/cpp/leveldb/util/crc32c.h +43 -0
  538. package/cpp/leveldb/util/crc32c_test.cc +61 -0
  539. package/cpp/leveldb/util/env.cc +108 -0
  540. package/cpp/leveldb/util/env_posix.cc +893 -0
  541. package/cpp/leveldb/util/env_posix_test.cc +353 -0
  542. package/cpp/leveldb/util/env_posix_test_helper.h +28 -0
  543. package/cpp/leveldb/util/env_test.cc +240 -0
  544. package/cpp/leveldb/util/env_windows.cc +796 -0
  545. package/cpp/leveldb/util/env_windows_test.cc +65 -0
  546. package/cpp/leveldb/util/env_windows_test_helper.h +25 -0
  547. package/cpp/leveldb/util/filter_policy.cc +11 -0
  548. package/cpp/leveldb/util/hash.cc +55 -0
  549. package/cpp/leveldb/util/hash.h +19 -0
  550. package/cpp/leveldb/util/hash_test.cc +46 -0
  551. package/cpp/leveldb/util/histogram.cc +272 -0
  552. package/cpp/leveldb/util/histogram.h +44 -0
  553. package/cpp/leveldb/util/logging.cc +82 -0
  554. package/cpp/leveldb/util/logging.h +44 -0
  555. package/cpp/leveldb/util/logging_test.cc +145 -0
  556. package/cpp/leveldb/util/mutexlock.h +39 -0
  557. package/cpp/leveldb/util/no_destructor.h +46 -0
  558. package/cpp/leveldb/util/no_destructor_test.cc +49 -0
  559. package/cpp/leveldb/util/options.cc +14 -0
  560. package/cpp/leveldb/util/posix_logger.h +130 -0
  561. package/cpp/leveldb/util/random.h +63 -0
  562. package/cpp/leveldb/util/status.cc +77 -0
  563. package/cpp/leveldb/util/status_test.cc +44 -0
  564. package/cpp/leveldb/util/testutil.cc +51 -0
  565. package/cpp/leveldb/util/testutil.h +82 -0
  566. package/cpp/leveldb/util/windows_logger.h +124 -0
  567. package/cpp/react-native-leveldb.cpp +694 -0
  568. package/cpp/react-native-leveldb.h +4 -0
  569. package/ios/Leveldb.h +9 -0
  570. package/ios/Leveldb.mm +35 -0
  571. package/ios/Leveldb.xcodeproj/project.pbxproj +288 -0
  572. package/lib/commonjs/fake.js +181 -0
  573. package/lib/commonjs/fake.js.map +1 -0
  574. package/lib/commonjs/fake.test.js +30 -0
  575. package/lib/commonjs/fake.test.js.map +1 -0
  576. package/lib/commonjs/index.js +172 -0
  577. package/lib/commonjs/index.js.map +1 -0
  578. package/lib/commonjs/package.json +1 -0
  579. package/lib/module/fake.js +171 -0
  580. package/lib/module/fake.js.map +1 -0
  581. package/lib/module/fake.test.js +30 -0
  582. package/lib/module/fake.test.js.map +1 -0
  583. package/lib/module/index.js +165 -0
  584. package/lib/module/index.js.map +1 -0
  585. package/lib/typescript/fake.d.ts +34 -0
  586. package/lib/typescript/fake.d.ts.map +1 -0
  587. package/lib/typescript/fake.test.d.ts +2 -0
  588. package/lib/typescript/fake.test.d.ts.map +1 -0
  589. package/lib/typescript/index.d.ts +72 -0
  590. package/lib/typescript/index.d.ts.map +1 -0
  591. package/package.json +157 -0
  592. package/rn-leveldb.podspec +30 -0
  593. package/src/fake.test.ts +37 -0
  594. package/src/fake.ts +203 -0
  595. package/src/index.ts +291 -0
@@ -0,0 +1,83 @@
1
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+ //
5
+ // File names used by DB code
6
+
7
+ #ifndef STORAGE_LEVELDB_DB_FILENAME_H_
8
+ #define STORAGE_LEVELDB_DB_FILENAME_H_
9
+
10
+ #include <cstdint>
11
+ #include <string>
12
+
13
+ #include "leveldb/slice.h"
14
+ #include "leveldb/status.h"
15
+ #include "port/port.h"
16
+
17
+ namespace leveldb {
18
+
19
+ class Env;
20
+
21
+ enum FileType {
22
+ kLogFile,
23
+ kDBLockFile,
24
+ kTableFile,
25
+ kDescriptorFile,
26
+ kCurrentFile,
27
+ kTempFile,
28
+ kInfoLogFile // Either the current one, or an old one
29
+ };
30
+
31
+ // Return the name of the log file with the specified number
32
+ // in the db named by "dbname". The result will be prefixed with
33
+ // "dbname".
34
+ std::string LogFileName(const std::string& dbname, uint64_t number);
35
+
36
+ // Return the name of the sstable with the specified number
37
+ // in the db named by "dbname". The result will be prefixed with
38
+ // "dbname".
39
+ std::string TableFileName(const std::string& dbname, uint64_t number);
40
+
41
+ // Return the legacy file name for an sstable with the specified number
42
+ // in the db named by "dbname". The result will be prefixed with
43
+ // "dbname".
44
+ std::string SSTTableFileName(const std::string& dbname, uint64_t number);
45
+
46
+ // Return the name of the descriptor file for the db named by
47
+ // "dbname" and the specified incarnation number. The result will be
48
+ // prefixed with "dbname".
49
+ std::string DescriptorFileName(const std::string& dbname, uint64_t number);
50
+
51
+ // Return the name of the current file. This file contains the name
52
+ // of the current manifest file. The result will be prefixed with
53
+ // "dbname".
54
+ std::string CurrentFileName(const std::string& dbname);
55
+
56
+ // Return the name of the lock file for the db named by
57
+ // "dbname". The result will be prefixed with "dbname".
58
+ std::string LockFileName(const std::string& dbname);
59
+
60
+ // Return the name of a temporary file owned by the db named "dbname".
61
+ // The result will be prefixed with "dbname".
62
+ std::string TempFileName(const std::string& dbname, uint64_t number);
63
+
64
+ // Return the name of the info log file for "dbname".
65
+ std::string InfoLogFileName(const std::string& dbname);
66
+
67
+ // Return the name of the old info log file for "dbname".
68
+ std::string OldInfoLogFileName(const std::string& dbname);
69
+
70
+ // If filename is a leveldb file, store the type of the file in *type.
71
+ // The number encoded in the filename is stored in *number. If the
72
+ // filename was successfully parsed, returns true. Else return false.
73
+ bool ParseFileName(const std::string& filename, uint64_t* number,
74
+ FileType* type);
75
+
76
+ // Make the CURRENT file point to the descriptor file with the
77
+ // specified number.
78
+ Status SetCurrentFile(Env* env, const std::string& dbname,
79
+ uint64_t descriptor_number);
80
+
81
+ } // namespace leveldb
82
+
83
+ #endif // STORAGE_LEVELDB_DB_FILENAME_H_
@@ -0,0 +1,132 @@
1
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+
5
+ #include "db/filename.h"
6
+
7
+ #include "gtest/gtest.h"
8
+ #include "db/dbformat.h"
9
+ #include "port/port.h"
10
+ #include "util/logging.h"
11
+
12
+ namespace leveldb {
13
+
14
+ TEST(FileNameTest, Parse) {
15
+ Slice db;
16
+ FileType type;
17
+ uint64_t number;
18
+
19
+ // Successful parses
20
+ static struct {
21
+ const char* fname;
22
+ uint64_t number;
23
+ FileType type;
24
+ } cases[] = {
25
+ {"100.log", 100, kLogFile},
26
+ {"0.log", 0, kLogFile},
27
+ {"0.sst", 0, kTableFile},
28
+ {"0.ldb", 0, kTableFile},
29
+ {"CURRENT", 0, kCurrentFile},
30
+ {"LOCK", 0, kDBLockFile},
31
+ {"MANIFEST-2", 2, kDescriptorFile},
32
+ {"MANIFEST-7", 7, kDescriptorFile},
33
+ {"LOG", 0, kInfoLogFile},
34
+ {"LOG.old", 0, kInfoLogFile},
35
+ {"18446744073709551615.log", 18446744073709551615ull, kLogFile},
36
+ };
37
+ for (int i = 0; i < sizeof(cases) / sizeof(cases[0]); i++) {
38
+ std::string f = cases[i].fname;
39
+ ASSERT_TRUE(ParseFileName(f, &number, &type)) << f;
40
+ ASSERT_EQ(cases[i].type, type) << f;
41
+ ASSERT_EQ(cases[i].number, number) << f;
42
+ }
43
+
44
+ // Errors
45
+ static const char* errors[] = {"",
46
+ "foo",
47
+ "foo-dx-100.log",
48
+ ".log",
49
+ "",
50
+ "manifest",
51
+ "CURREN",
52
+ "CURRENTX",
53
+ "MANIFES",
54
+ "MANIFEST",
55
+ "MANIFEST-",
56
+ "XMANIFEST-3",
57
+ "MANIFEST-3x",
58
+ "LOC",
59
+ "LOCKx",
60
+ "LO",
61
+ "LOGx",
62
+ "18446744073709551616.log",
63
+ "184467440737095516150.log",
64
+ "100",
65
+ "100.",
66
+ "100.lop"};
67
+ for (int i = 0; i < sizeof(errors) / sizeof(errors[0]); i++) {
68
+ std::string f = errors[i];
69
+ ASSERT_TRUE(!ParseFileName(f, &number, &type)) << f;
70
+ }
71
+ }
72
+
73
+ TEST(FileNameTest, Construction) {
74
+ uint64_t number;
75
+ FileType type;
76
+ std::string fname;
77
+
78
+ fname = CurrentFileName("foo");
79
+ ASSERT_EQ("foo/", std::string(fname.data(), 4));
80
+ ASSERT_TRUE(ParseFileName(fname.c_str() + 4, &number, &type));
81
+ ASSERT_EQ(0, number);
82
+ ASSERT_EQ(kCurrentFile, type);
83
+
84
+ fname = LockFileName("foo");
85
+ ASSERT_EQ("foo/", std::string(fname.data(), 4));
86
+ ASSERT_TRUE(ParseFileName(fname.c_str() + 4, &number, &type));
87
+ ASSERT_EQ(0, number);
88
+ ASSERT_EQ(kDBLockFile, type);
89
+
90
+ fname = LogFileName("foo", 192);
91
+ ASSERT_EQ("foo/", std::string(fname.data(), 4));
92
+ ASSERT_TRUE(ParseFileName(fname.c_str() + 4, &number, &type));
93
+ ASSERT_EQ(192, number);
94
+ ASSERT_EQ(kLogFile, type);
95
+
96
+ fname = TableFileName("bar", 200);
97
+ ASSERT_EQ("bar/", std::string(fname.data(), 4));
98
+ ASSERT_TRUE(ParseFileName(fname.c_str() + 4, &number, &type));
99
+ ASSERT_EQ(200, number);
100
+ ASSERT_EQ(kTableFile, type);
101
+
102
+ fname = DescriptorFileName("bar", 100);
103
+ ASSERT_EQ("bar/", std::string(fname.data(), 4));
104
+ ASSERT_TRUE(ParseFileName(fname.c_str() + 4, &number, &type));
105
+ ASSERT_EQ(100, number);
106
+ ASSERT_EQ(kDescriptorFile, type);
107
+
108
+ fname = TempFileName("tmp", 999);
109
+ ASSERT_EQ("tmp/", std::string(fname.data(), 4));
110
+ ASSERT_TRUE(ParseFileName(fname.c_str() + 4, &number, &type));
111
+ ASSERT_EQ(999, number);
112
+ ASSERT_EQ(kTempFile, type);
113
+
114
+ fname = InfoLogFileName("foo");
115
+ ASSERT_EQ("foo/", std::string(fname.data(), 4));
116
+ ASSERT_TRUE(ParseFileName(fname.c_str() + 4, &number, &type));
117
+ ASSERT_EQ(0, number);
118
+ ASSERT_EQ(kInfoLogFile, type);
119
+
120
+ fname = OldInfoLogFileName("foo");
121
+ ASSERT_EQ("foo/", std::string(fname.data(), 4));
122
+ ASSERT_TRUE(ParseFileName(fname.c_str() + 4, &number, &type));
123
+ ASSERT_EQ(0, number);
124
+ ASSERT_EQ(kInfoLogFile, type);
125
+ }
126
+
127
+ } // namespace leveldb
128
+
129
+ int main(int argc, char** argv) {
130
+ testing::InitGoogleTest(&argc, argv);
131
+ return RUN_ALL_TESTS();
132
+ }
@@ -0,0 +1,64 @@
1
+ // Copyright (c) 2012 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+
5
+ #include <cstdio>
6
+
7
+ #include "leveldb/dumpfile.h"
8
+ #include "leveldb/env.h"
9
+ #include "leveldb/status.h"
10
+
11
+ namespace leveldb {
12
+ namespace {
13
+
14
+ class StdoutPrinter : public WritableFile {
15
+ public:
16
+ Status Append(const Slice& data) override {
17
+ fwrite(data.data(), 1, data.size(), stdout);
18
+ return Status::OK();
19
+ }
20
+ Status Close() override { return Status::OK(); }
21
+ Status Flush() override { return Status::OK(); }
22
+ Status Sync() override { return Status::OK(); }
23
+ };
24
+
25
+ bool HandleDumpCommand(Env* env, char** files, int num) {
26
+ StdoutPrinter printer;
27
+ bool ok = true;
28
+ for (int i = 0; i < num; i++) {
29
+ Status s = DumpFile(env, files[i], &printer);
30
+ if (!s.ok()) {
31
+ std::fprintf(stderr, "%s\n", s.ToString().c_str());
32
+ ok = false;
33
+ }
34
+ }
35
+ return ok;
36
+ }
37
+
38
+ } // namespace
39
+ } // namespace leveldb
40
+
41
+ static void Usage() {
42
+ std::fprintf(
43
+ stderr,
44
+ "Usage: leveldbutil command...\n"
45
+ " dump files... -- dump contents of specified files\n");
46
+ }
47
+
48
+ int main(int argc, char** argv) {
49
+ leveldb::Env* env = leveldb::Env::Default();
50
+ bool ok = true;
51
+ if (argc < 2) {
52
+ Usage();
53
+ ok = false;
54
+ } else {
55
+ std::string command = argv[1];
56
+ if (command == "dump") {
57
+ ok = leveldb::HandleDumpCommand(env, argv + 2, argc - 2);
58
+ } else {
59
+ Usage();
60
+ ok = false;
61
+ }
62
+ }
63
+ return (ok ? 0 : 1);
64
+ }
@@ -0,0 +1,35 @@
1
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+ //
5
+ // Log format information shared by reader and writer.
6
+ // See ../doc/log_format.md for more detail.
7
+
8
+ #ifndef STORAGE_LEVELDB_DB_LOG_FORMAT_H_
9
+ #define STORAGE_LEVELDB_DB_LOG_FORMAT_H_
10
+
11
+ namespace leveldb {
12
+ namespace log {
13
+
14
+ enum RecordType {
15
+ // Zero is reserved for preallocated files
16
+ kZeroType = 0,
17
+
18
+ kFullType = 1,
19
+
20
+ // For fragments
21
+ kFirstType = 2,
22
+ kMiddleType = 3,
23
+ kLastType = 4
24
+ };
25
+ static const int kMaxRecordType = kLastType;
26
+
27
+ static const int kBlockSize = 32768;
28
+
29
+ // Header is checksum (4 bytes), length (2 bytes), type (1 byte).
30
+ static const int kHeaderSize = 4 + 2 + 1;
31
+
32
+ } // namespace log
33
+ } // namespace leveldb
34
+
35
+ #endif // STORAGE_LEVELDB_DB_LOG_FORMAT_H_
@@ -0,0 +1,274 @@
1
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+
5
+ #include "db/log_reader.h"
6
+
7
+ #include <cstdio>
8
+
9
+ #include "leveldb/env.h"
10
+ #include "util/coding.h"
11
+ #include "util/crc32c.h"
12
+
13
+ namespace leveldb {
14
+ namespace log {
15
+
16
+ Reader::Reporter::~Reporter() = default;
17
+
18
+ Reader::Reader(SequentialFile* file, Reporter* reporter, bool checksum,
19
+ uint64_t initial_offset)
20
+ : file_(file),
21
+ reporter_(reporter),
22
+ checksum_(checksum),
23
+ backing_store_(new char[kBlockSize]),
24
+ buffer_(),
25
+ eof_(false),
26
+ last_record_offset_(0),
27
+ end_of_buffer_offset_(0),
28
+ initial_offset_(initial_offset),
29
+ resyncing_(initial_offset > 0) {}
30
+
31
+ Reader::~Reader() { delete[] backing_store_; }
32
+
33
+ bool Reader::SkipToInitialBlock() {
34
+ const size_t offset_in_block = initial_offset_ % kBlockSize;
35
+ uint64_t block_start_location = initial_offset_ - offset_in_block;
36
+
37
+ // Don't search a block if we'd be in the trailer
38
+ if (offset_in_block > kBlockSize - 6) {
39
+ block_start_location += kBlockSize;
40
+ }
41
+
42
+ end_of_buffer_offset_ = block_start_location;
43
+
44
+ // Skip to start of first block that can contain the initial record
45
+ if (block_start_location > 0) {
46
+ Status skip_status = file_->Skip(block_start_location);
47
+ if (!skip_status.ok()) {
48
+ ReportDrop(block_start_location, skip_status);
49
+ return false;
50
+ }
51
+ }
52
+
53
+ return true;
54
+ }
55
+
56
+ bool Reader::ReadRecord(Slice* record, std::string* scratch) {
57
+ if (last_record_offset_ < initial_offset_) {
58
+ if (!SkipToInitialBlock()) {
59
+ return false;
60
+ }
61
+ }
62
+
63
+ scratch->clear();
64
+ record->clear();
65
+ bool in_fragmented_record = false;
66
+ // Record offset of the logical record that we're reading
67
+ // 0 is a dummy value to make compilers happy
68
+ uint64_t prospective_record_offset = 0;
69
+
70
+ Slice fragment;
71
+ while (true) {
72
+ const unsigned int record_type = ReadPhysicalRecord(&fragment);
73
+
74
+ // ReadPhysicalRecord may have only had an empty trailer remaining in its
75
+ // internal buffer. Calculate the offset of the next physical record now
76
+ // that it has returned, properly accounting for its header size.
77
+ uint64_t physical_record_offset =
78
+ end_of_buffer_offset_ - buffer_.size() - kHeaderSize - fragment.size();
79
+
80
+ if (resyncing_) {
81
+ if (record_type == kMiddleType) {
82
+ continue;
83
+ } else if (record_type == kLastType) {
84
+ resyncing_ = false;
85
+ continue;
86
+ } else {
87
+ resyncing_ = false;
88
+ }
89
+ }
90
+
91
+ switch (record_type) {
92
+ case kFullType:
93
+ if (in_fragmented_record) {
94
+ // Handle bug in earlier versions of log::Writer where
95
+ // it could emit an empty kFirstType record at the tail end
96
+ // of a block followed by a kFullType or kFirstType record
97
+ // at the beginning of the next block.
98
+ if (!scratch->empty()) {
99
+ ReportCorruption(scratch->size(), "partial record without end(1)");
100
+ }
101
+ }
102
+ prospective_record_offset = physical_record_offset;
103
+ scratch->clear();
104
+ *record = fragment;
105
+ last_record_offset_ = prospective_record_offset;
106
+ return true;
107
+
108
+ case kFirstType:
109
+ if (in_fragmented_record) {
110
+ // Handle bug in earlier versions of log::Writer where
111
+ // it could emit an empty kFirstType record at the tail end
112
+ // of a block followed by a kFullType or kFirstType record
113
+ // at the beginning of the next block.
114
+ if (!scratch->empty()) {
115
+ ReportCorruption(scratch->size(), "partial record without end(2)");
116
+ }
117
+ }
118
+ prospective_record_offset = physical_record_offset;
119
+ scratch->assign(fragment.data(), fragment.size());
120
+ in_fragmented_record = true;
121
+ break;
122
+
123
+ case kMiddleType:
124
+ if (!in_fragmented_record) {
125
+ ReportCorruption(fragment.size(),
126
+ "missing start of fragmented record(1)");
127
+ } else {
128
+ scratch->append(fragment.data(), fragment.size());
129
+ }
130
+ break;
131
+
132
+ case kLastType:
133
+ if (!in_fragmented_record) {
134
+ ReportCorruption(fragment.size(),
135
+ "missing start of fragmented record(2)");
136
+ } else {
137
+ scratch->append(fragment.data(), fragment.size());
138
+ *record = Slice(*scratch);
139
+ last_record_offset_ = prospective_record_offset;
140
+ return true;
141
+ }
142
+ break;
143
+
144
+ case kEof:
145
+ if (in_fragmented_record) {
146
+ // This can be caused by the writer dying immediately after
147
+ // writing a physical record but before completing the next; don't
148
+ // treat it as a corruption, just ignore the entire logical record.
149
+ scratch->clear();
150
+ }
151
+ return false;
152
+
153
+ case kBadRecord:
154
+ if (in_fragmented_record) {
155
+ ReportCorruption(scratch->size(), "error in middle of record");
156
+ in_fragmented_record = false;
157
+ scratch->clear();
158
+ }
159
+ break;
160
+
161
+ default: {
162
+ char buf[40];
163
+ std::snprintf(buf, sizeof(buf), "unknown record type %u", record_type);
164
+ ReportCorruption(
165
+ (fragment.size() + (in_fragmented_record ? scratch->size() : 0)),
166
+ buf);
167
+ in_fragmented_record = false;
168
+ scratch->clear();
169
+ break;
170
+ }
171
+ }
172
+ }
173
+ return false;
174
+ }
175
+
176
+ uint64_t Reader::LastRecordOffset() { return last_record_offset_; }
177
+
178
+ void Reader::ReportCorruption(uint64_t bytes, const char* reason) {
179
+ ReportDrop(bytes, Status::Corruption(reason));
180
+ }
181
+
182
+ void Reader::ReportDrop(uint64_t bytes, const Status& reason) {
183
+ if (reporter_ != nullptr &&
184
+ end_of_buffer_offset_ - buffer_.size() - bytes >= initial_offset_) {
185
+ reporter_->Corruption(static_cast<size_t>(bytes), reason);
186
+ }
187
+ }
188
+
189
+ unsigned int Reader::ReadPhysicalRecord(Slice* result) {
190
+ while (true) {
191
+ if (buffer_.size() < kHeaderSize) {
192
+ if (!eof_) {
193
+ // Last read was a full read, so this is a trailer to skip
194
+ buffer_.clear();
195
+ Status status = file_->Read(kBlockSize, &buffer_, backing_store_);
196
+ end_of_buffer_offset_ += buffer_.size();
197
+ if (!status.ok()) {
198
+ buffer_.clear();
199
+ ReportDrop(kBlockSize, status);
200
+ eof_ = true;
201
+ return kEof;
202
+ } else if (buffer_.size() < kBlockSize) {
203
+ eof_ = true;
204
+ }
205
+ continue;
206
+ } else {
207
+ // Note that if buffer_ is non-empty, we have a truncated header at the
208
+ // end of the file, which can be caused by the writer crashing in the
209
+ // middle of writing the header. Instead of considering this an error,
210
+ // just report EOF.
211
+ buffer_.clear();
212
+ return kEof;
213
+ }
214
+ }
215
+
216
+ // Parse the header
217
+ const char* header = buffer_.data();
218
+ const uint32_t a = static_cast<uint32_t>(header[4]) & 0xff;
219
+ const uint32_t b = static_cast<uint32_t>(header[5]) & 0xff;
220
+ const unsigned int type = header[6];
221
+ const uint32_t length = a | (b << 8);
222
+ if (kHeaderSize + length > buffer_.size()) {
223
+ size_t drop_size = buffer_.size();
224
+ buffer_.clear();
225
+ if (!eof_) {
226
+ ReportCorruption(drop_size, "bad record length");
227
+ return kBadRecord;
228
+ }
229
+ // If the end of the file has been reached without reading |length| bytes
230
+ // of payload, assume the writer died in the middle of writing the record.
231
+ // Don't report a corruption.
232
+ return kEof;
233
+ }
234
+
235
+ if (type == kZeroType && length == 0) {
236
+ // Skip zero length record without reporting any drops since
237
+ // such records are produced by the mmap based writing code in
238
+ // env_posix.cc that preallocates file regions.
239
+ buffer_.clear();
240
+ return kBadRecord;
241
+ }
242
+
243
+ // Check crc
244
+ if (checksum_) {
245
+ uint32_t expected_crc = crc32c::Unmask(DecodeFixed32(header));
246
+ uint32_t actual_crc = crc32c::Value(header + 6, 1 + length);
247
+ if (actual_crc != expected_crc) {
248
+ // Drop the rest of the buffer since "length" itself may have
249
+ // been corrupted and if we trust it, we could find some
250
+ // fragment of a real log record that just happens to look
251
+ // like a valid log record.
252
+ size_t drop_size = buffer_.size();
253
+ buffer_.clear();
254
+ ReportCorruption(drop_size, "checksum mismatch");
255
+ return kBadRecord;
256
+ }
257
+ }
258
+
259
+ buffer_.remove_prefix(kHeaderSize + length);
260
+
261
+ // Skip physical record that started before initial_offset_
262
+ if (end_of_buffer_offset_ - buffer_.size() - kHeaderSize - length <
263
+ initial_offset_) {
264
+ result->clear();
265
+ return kBadRecord;
266
+ }
267
+
268
+ *result = Slice(header + kHeaderSize, length);
269
+ return type;
270
+ }
271
+ }
272
+
273
+ } // namespace log
274
+ } // namespace leveldb
@@ -0,0 +1,112 @@
1
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
+
5
+ #ifndef STORAGE_LEVELDB_DB_LOG_READER_H_
6
+ #define STORAGE_LEVELDB_DB_LOG_READER_H_
7
+
8
+ #include <cstdint>
9
+
10
+ #include "db/log_format.h"
11
+ #include "leveldb/slice.h"
12
+ #include "leveldb/status.h"
13
+
14
+ namespace leveldb {
15
+
16
+ class SequentialFile;
17
+
18
+ namespace log {
19
+
20
+ class Reader {
21
+ public:
22
+ // Interface for reporting errors.
23
+ class Reporter {
24
+ public:
25
+ virtual ~Reporter();
26
+
27
+ // Some corruption was detected. "size" is the approximate number
28
+ // of bytes dropped due to the corruption.
29
+ virtual void Corruption(size_t bytes, const Status& status) = 0;
30
+ };
31
+
32
+ // Create a reader that will return log records from "*file".
33
+ // "*file" must remain live while this Reader is in use.
34
+ //
35
+ // If "reporter" is non-null, it is notified whenever some data is
36
+ // dropped due to a detected corruption. "*reporter" must remain
37
+ // live while this Reader is in use.
38
+ //
39
+ // If "checksum" is true, verify checksums if available.
40
+ //
41
+ // The Reader will start reading at the first record located at physical
42
+ // position >= initial_offset within the file.
43
+ Reader(SequentialFile* file, Reporter* reporter, bool checksum,
44
+ uint64_t initial_offset);
45
+
46
+ Reader(const Reader&) = delete;
47
+ Reader& operator=(const Reader&) = delete;
48
+
49
+ ~Reader();
50
+
51
+ // Read the next record into *record. Returns true if read
52
+ // successfully, false if we hit end of the input. May use
53
+ // "*scratch" as temporary storage. The contents filled in *record
54
+ // will only be valid until the next mutating operation on this
55
+ // reader or the next mutation to *scratch.
56
+ bool ReadRecord(Slice* record, std::string* scratch);
57
+
58
+ // Returns the physical offset of the last record returned by ReadRecord.
59
+ //
60
+ // Undefined before the first call to ReadRecord.
61
+ uint64_t LastRecordOffset();
62
+
63
+ private:
64
+ // Extend record types with the following special values
65
+ enum {
66
+ kEof = kMaxRecordType + 1,
67
+ // Returned whenever we find an invalid physical record.
68
+ // Currently there are three situations in which this happens:
69
+ // * The record has an invalid CRC (ReadPhysicalRecord reports a drop)
70
+ // * The record is a 0-length record (No drop is reported)
71
+ // * The record is below constructor's initial_offset (No drop is reported)
72
+ kBadRecord = kMaxRecordType + 2
73
+ };
74
+
75
+ // Skips all blocks that are completely before "initial_offset_".
76
+ //
77
+ // Returns true on success. Handles reporting.
78
+ bool SkipToInitialBlock();
79
+
80
+ // Return type, or one of the preceding special values
81
+ unsigned int ReadPhysicalRecord(Slice* result);
82
+
83
+ // Reports dropped bytes to the reporter.
84
+ // buffer_ must be updated to remove the dropped bytes prior to invocation.
85
+ void ReportCorruption(uint64_t bytes, const char* reason);
86
+ void ReportDrop(uint64_t bytes, const Status& reason);
87
+
88
+ SequentialFile* const file_;
89
+ Reporter* const reporter_;
90
+ bool const checksum_;
91
+ char* const backing_store_;
92
+ Slice buffer_;
93
+ bool eof_; // Last Read() indicated EOF by returning < kBlockSize
94
+
95
+ // Offset of the last record returned by ReadRecord.
96
+ uint64_t last_record_offset_;
97
+ // Offset of the first location past the end of buffer_.
98
+ uint64_t end_of_buffer_offset_;
99
+
100
+ // Offset at which to start looking for the first record to return
101
+ uint64_t const initial_offset_;
102
+
103
+ // True if we are resynchronizing after a seek (initial_offset_ > 0). In
104
+ // particular, a run of kMiddleType and kLastType records can be silently
105
+ // skipped in this mode
106
+ bool resyncing_;
107
+ };
108
+
109
+ } // namespace log
110
+ } // namespace leveldb
111
+
112
+ #endif // STORAGE_LEVELDB_DB_LOG_READER_H_