Ai
1 Star 0 Fork 0

hantaohuang/php-rocksdb

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
rocksdb_options.cc 5.37 KB
一键复制 编辑 原始数据 按行查看 历史
哇咔咔 提交于 2020-04-24 16:50 +08:00 . feat: support transaction db (#2)
#include "php_rocksdb.h"
#include "rocksdb/db.h"
#include "rocksdb/utilities/transaction.h"
#include "rocksdb/utilities/transaction_db.h"
#include "rocksdb/merge_operator.h"
#include "stringappend.h"
using namespace rocksdb;
extern Snapshot *php_rocksdb_snapshot_get_ptr(zval *zobject);
void check_rocksdb_db_options(Options &op, HashTable *vht)
{
zval *ztmp;
if (php_rocksdb_array_get_value(vht, "create_if_missing", ztmp))
{
op.create_if_missing = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "error_if_exists", ztmp))
{
op.error_if_exists = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "paranoid_checks", ztmp))
{
op.paranoid_checks = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "max_open_files", ztmp))
{
op.max_open_files = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "merge_operator", ztmp))
{
char *delim_char = ZSTR_VAL(zval_get_string(ztmp));
op.merge_operator.reset(new StringAppendOperator(delim_char[0]));
}
}
void check_rocksdb_db_write_options(WriteOptions &wop, HashTable *vht)
{
zval *ztmp;
if (php_rocksdb_array_get_value(vht, "disableWAL", ztmp))
{
wop.disableWAL = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "ignore_missing_column_families", ztmp))
{
wop.ignore_missing_column_families = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "low_pri", ztmp))
{
wop.low_pri = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "no_slowdown", ztmp))
{
wop.no_slowdown = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "sync", ztmp))
{
wop.sync = zval_is_true(ztmp);
}
}
void check_rocksdb_transaction_db_options(TransactionDBOptions &txn_db_options, HashTable *vht)
{
zval *ztmp;
if (php_rocksdb_array_get_value(vht, "default_lock_timeout", ztmp))
{
txn_db_options.default_lock_timeout = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "max_num_deadlocks", ztmp))
{
txn_db_options.max_num_deadlocks = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "max_num_locks", ztmp))
{
txn_db_options.max_num_locks = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "num_stripes", ztmp))
{
txn_db_options.num_stripes = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "rollback_merge_operands", ztmp))
{
txn_db_options.rollback_merge_operands = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "transaction_lock_timeout", ztmp))
{
txn_db_options.transaction_lock_timeout = zval_get_long(ztmp);
}
}
void check_rocksdb_transaction_options(TransactionOptions &txn_options, HashTable *vht)
{
zval *ztmp;
if (php_rocksdb_array_get_value(vht, "deadlock_detect", ztmp))
{
txn_options.deadlock_detect = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "deadlock_detect_depth", ztmp))
{
txn_options.deadlock_detect_depth = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "expiration", ztmp))
{
txn_options.expiration = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "lock_timeout", ztmp))
{
txn_options.lock_timeout = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "max_write_batch_size", ztmp))
{
txn_options.max_write_batch_size = zval_get_long(ztmp);
}
if (php_rocksdb_array_get_value(vht, "set_snapshot", ztmp))
{
txn_options.set_snapshot = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "skip_concurrency_control", ztmp))
{
txn_options.skip_concurrency_control = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "use_only_the_last_commit_time_batch_for_recovery", ztmp))
{
txn_options.use_only_the_last_commit_time_batch_for_recovery = zval_is_true(ztmp);
}
}
void check_rocksdb_db_read_options(ReadOptions &rop, HashTable *vht)
{
zval *ztmp;
if (php_rocksdb_array_get_value(vht, "background_purge_on_iterator_cleanup", ztmp))
{
rop.background_purge_on_iterator_cleanup = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "fill_cache", ztmp))
{
rop.fill_cache = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "ignore_range_deletions", ztmp))
{
rop.ignore_range_deletions = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "managed", ztmp))
{
rop.managed = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "pin_data", ztmp))
{
rop.pin_data = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "prefix_same_as_start", ztmp))
{
rop.prefix_same_as_start = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "snapshot", ztmp))
{
rop.snapshot = php_rocksdb_snapshot_get_ptr(ztmp);
}
if (php_rocksdb_array_get_value(vht, "tailing", ztmp))
{
rop.tailing = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "total_order_seek", ztmp))
{
rop.total_order_seek = zval_is_true(ztmp);
}
if (php_rocksdb_array_get_value(vht, "verify_checksums", ztmp))
{
rop.verify_checksums = zval_is_true(ztmp);
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/codinghuang/php-rocksdb.git
git@gitee.com:codinghuang/php-rocksdb.git
codinghuang
php-rocksdb
php-rocksdb
master

搜索帮助