use crate::ffi;
pub struct TransactionOptions {
pub(crate) inner: *mut ffi::rocksdb_transaction_options_t,
}
unsafe impl Send for TransactionOptions {}
unsafe impl Sync for TransactionOptions {}
impl Default for TransactionOptions {
fn default() -> Self {
let txn_opts = unsafe { ffi::rocksdb_transaction_options_create() };
assert!(
!txn_opts.is_null(),
"Could not create RocksDB transaction options"
);
Self { inner: txn_opts }
}
}
impl TransactionOptions {
pub fn new() -> TransactionOptions {
TransactionOptions::default()
}
pub fn set_skip_prepare(&mut self, skip_prepare: bool) {
unsafe {
ffi::rocksdb_transaction_options_set_skip_prepare(self.inner, u8::from(skip_prepare));
}
}
pub fn set_snapshot(&mut self, snapshot: bool) {
unsafe {
ffi::rocksdb_transaction_options_set_set_snapshot(self.inner, u8::from(snapshot));
}
}
pub fn set_deadlock_detect(&mut self, deadlock_detect: bool) {
unsafe {
ffi::rocksdb_transaction_options_set_deadlock_detect(
self.inner,
u8::from(deadlock_detect),
);
}
}
pub fn set_lock_timeout(&mut self, lock_timeout: i64) {
unsafe {
ffi::rocksdb_transaction_options_set_lock_timeout(self.inner, lock_timeout);
}
}
pub fn set_expiration(&mut self, expiration: i64) {
unsafe {
ffi::rocksdb_transaction_options_set_expiration(self.inner, expiration);
}
}
pub fn set_deadlock_detect_depth(&mut self, depth: i64) {
unsafe {
ffi::rocksdb_transaction_options_set_deadlock_detect_depth(self.inner, depth);
}
}
pub fn set_max_write_batch_size(&mut self, size: usize) {
unsafe {
ffi::rocksdb_transaction_options_set_max_write_batch_size(self.inner, size);
}
}
}
impl Drop for TransactionOptions {
fn drop(&mut self) {
unsafe {
ffi::rocksdb_transaction_options_destroy(self.inner);
}
}
}
pub struct TransactionDBOptions {
pub(crate) inner: *mut ffi::rocksdb_transactiondb_options_t,
}
unsafe impl Send for TransactionDBOptions {}
unsafe impl Sync for TransactionDBOptions {}
impl Default for TransactionDBOptions {
fn default() -> Self {
let txn_db_opts = unsafe { ffi::rocksdb_transactiondb_options_create() };
assert!(
!txn_db_opts.is_null(),
"Could not create RocksDB transaction_db options"
);
Self { inner: txn_db_opts }
}
}
impl TransactionDBOptions {
pub fn new() -> TransactionDBOptions {
TransactionDBOptions::default()
}
pub fn set_default_lock_timeout(&mut self, default_lock_timeout: i64) {
unsafe {
ffi::rocksdb_transactiondb_options_set_default_lock_timeout(
self.inner,
default_lock_timeout,
);
}
}
pub fn set_txn_lock_timeout(&mut self, txn_lock_timeout: i64) {
unsafe {
ffi::rocksdb_transactiondb_options_set_transaction_lock_timeout(
self.inner,
txn_lock_timeout,
);
}
}
pub fn set_max_num_locks(&mut self, max_num_locks: i64) {
unsafe {
ffi::rocksdb_transactiondb_options_set_max_num_locks(self.inner, max_num_locks);
}
}
pub fn set_num_stripes(&mut self, num_stripes: usize) {
unsafe {
ffi::rocksdb_transactiondb_options_set_num_stripes(self.inner, num_stripes);
}
}
}
impl Drop for TransactionDBOptions {
fn drop(&mut self) {
unsafe {
ffi::rocksdb_transactiondb_options_destroy(self.inner);
}
}
}
pub struct OptimisticTransactionOptions {
pub(crate) inner: *mut ffi::rocksdb_optimistictransaction_options_t,
}
unsafe impl Send for OptimisticTransactionOptions {}
unsafe impl Sync for OptimisticTransactionOptions {}
impl Default for OptimisticTransactionOptions {
fn default() -> Self {
let txn_opts = unsafe { ffi::rocksdb_optimistictransaction_options_create() };
assert!(
!txn_opts.is_null(),
"Could not create RocksDB optimistic transaction options"
);
Self { inner: txn_opts }
}
}
impl OptimisticTransactionOptions {
pub fn new() -> OptimisticTransactionOptions {
OptimisticTransactionOptions::default()
}
pub fn set_snapshot(&mut self, snapshot: bool) {
unsafe {
ffi::rocksdb_optimistictransaction_options_set_set_snapshot(
self.inner,
u8::from(snapshot),
);
}
}
}
impl Drop for OptimisticTransactionOptions {
fn drop(&mut self) {
unsafe {
ffi::rocksdb_optimistictransaction_options_destroy(self.inner);
}
}
}