ckb_rocksdb/ops/
checkpoint.rs1use crate::ffi;
2use crate::{checkpoint::Checkpoint, handle::Handle, Error};
3use std::marker::PhantomData;
4
5pub trait CreateCheckpointObject {
6 unsafe fn create_checkpoint_object_raw(&self) -> Result<*mut ffi::rocksdb_checkpoint_t, Error>;
7 fn create_checkpoint_object(&self) -> Result<Checkpoint<'_>, Error> {
8 let checkpoint: *mut ffi::rocksdb_checkpoint_t;
9
10 unsafe { checkpoint = self.create_checkpoint_object_raw()? };
11
12 if checkpoint.is_null() {
13 return Err(Error::new("Could not create checkpoint object.".to_owned()));
14 }
15
16 Ok(Checkpoint {
17 inner: checkpoint,
18 _db: PhantomData,
19 })
20 }
21}
22
23impl<T> CreateCheckpointObject for T
24where
25 T: Handle<ffi::rocksdb_t>,
26{
27 unsafe fn create_checkpoint_object_raw(&self) -> Result<*mut ffi::rocksdb_checkpoint_t, Error> {
28 Ok(ffi_try!(ffi::rocksdb_checkpoint_object_create(
29 self.handle(),
30 )))
31 }
32}