{-# LANGUAGE RecordWildCards #-} module Database.RocksDB.Options ( Options(..) , defaultOptions , marshalOptions ) where import Database.RocksDB.Internals import Database.RocksDB.Utils import Foreign hiding (newForeignPtr) import Foreign.Concurrent data Options = Options { totalThreads :: !(Maybe Int) , createIfMissing :: !(Maybe Bool) } defaultOptions :: Options {-# INLINEABLE defaultOptions #-} defaultOptions = Options {totalThreads = Nothing, createIfMissing = Nothing} marshalOptions :: Options -> IO (ForeignPtr RocksdbOptions) {-# INLINEABLE marshalOptions #-} marshalOptions Options {..} = do opts_p <- c_rocksdb_options_create setIntOptions totalThreads $c_rocksdb_options_increase_parallelism opts_p setBoolOptions createIfMissing $ c_rocksdb_options_set_create_if_missing opts_p newForeignPtr opts_p $ c_rocksdb_options_destroy opts_p