88
99#include < rocksdb/write_batch.h>
1010#include < rocksdb/filter_policy.h>
11+
1112#include < rocksdb/utilities/leveldb_options.h>
13+ #include < rocksdb/cache.h>
14+ #include < rocksdb/comparator.h>
15+ #include < rocksdb/env.h>
16+ #include < rocksdb/options.h>
17+ #include < rocksdb/table.h>
18+
19+ // #include <rocksdb/table.h>
20+ // #include <rocksdb/utilities/leveldb_options.h>
1221
1322#include " database.h"
1423#include " leveldown.h"
@@ -22,7 +31,7 @@ namespace leveldown {
2231OpenWorker::OpenWorker (
2332 Database *database
2433 , Nan::Callback *callback
25- , rocksdb::Cache* blockCache
34+ , std::shared_ptr< rocksdb::Cache> blockCache
2635 , const rocksdb::FilterPolicy* filterPolicy
2736 , bool createIfMissing
2837 , bool errorIfExists
@@ -35,7 +44,10 @@ OpenWorker::OpenWorker (
3544{
3645 rocksdb::LevelDBOptions levelOptions;
3746
38- levelOptions.block_cache = blockCache;
47+ if (blockCache != NULL ) {
48+ levelOptions.block_cache = blockCache.get ();
49+ }
50+
3951 levelOptions.filter_policy = filterPolicy;
4052 levelOptions.create_if_missing = createIfMissing;
4153 levelOptions.error_if_exists = errorIfExists;
@@ -52,6 +64,8 @@ OpenWorker::OpenWorker (
5264
5365
5466
67+ options = new rocksdb::Options (rocksdb::ConvertOptions (levelOptions));
68+ /*
5569 options = new rocksdb::Options();
5670 options->create_if_missing = levelOptions.create_if_missing;
5771 options->error_if_exists = levelOptions.error_if_exists;
@@ -62,17 +76,17 @@ OpenWorker::OpenWorker (
6276 options->max_open_files = levelOptions.max_open_files;
6377 options->compression = levelOptions.compression;
6478
65- // rocksdb::BlockBasedTableOptions table_options;
66- // table_options.block_cache.reset(levelOptions.block_cache );
67- // table_options.block_size = levelOptions.block_size;
68- // table_options.block_restart_interval = levelOptions.block_restart_interval;
69- // table_options.filter_policy.reset(levelOptions.filter_policy);
70- // options->table_factory.reset(rocksdb::NewBlockBasedTableFactory(levelOptions ));
71-
79+ rocksdb::BlockBasedTableOptions table_options;
80+ table_options.block_cache.reset(blockCache.get() );
81+ table_options.block_size = levelOptions.block_size;
82+ table_options.block_restart_interval = levelOptions.block_restart_interval;
83+ table_options.filter_policy.reset(levelOptions.filter_policy);
84+ options->table_factory.reset(rocksdb::NewBlockBasedTableFactory(table_options ));
85+ */
7286};
7387
7488OpenWorker::~OpenWorker () {
75- delete options;
89+ // delete options;
7690}
7791
7892void OpenWorker::Execute () {
0 commit comments