direct-rocksdb-0.0.3: src/Database/RocksDB/Options.hs
{-# 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