Skip to content
This repository has been archived by the owner on Apr 5, 2018. It is now read-only.

Commit

Permalink
added most other open() options available
Browse files Browse the repository at this point in the history
  • Loading branch information
rvagg committed Jun 29, 2013
1 parent c48daaa commit cfe03c5
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 5 deletions.
29 changes: 26 additions & 3 deletions src/database.cc
Expand Up @@ -94,9 +94,17 @@ md_status Database::OpenDatabase (OpenOptions options) {
}

int env_opt = 0;
env_opt = MDB_NOSYNC;
env_opt |= MDB_NOMETASYNC;
//env_opt |= MDB_WRITEMAP;
if (!options.sync)
env_opt |= MDB_NOSYNC;
if (options.readOnly)
env_opt |= MDB_RDONLY;
if (options.writeMap)
env_opt |= MDB_WRITEMAP;
if (!options.metaSync)
env_opt |= MDB_NOMETASYNC;
if (options.mapAsync)
env_opt |= MDB_MAPASYNC;

status.code = mdb_env_create(&env);
if (status.code)
return status;
Expand Down Expand Up @@ -327,6 +335,21 @@ v8::Handle<v8::Value> Database::Open (const v8::Arguments& args) {
, option_mapSize
, DEFAULT_MAPSIZE
);
options.sync = DEFAULT_SYNC
? BooleanOptionValueDefTrue(optionsObj, option_sync)
: BooleanOptionValue(optionsObj, option_sync);
options.readOnly = DEFAULT_READONLY
? BooleanOptionValueDefTrue(optionsObj, option_readOnly)
: BooleanOptionValue(optionsObj, option_readOnly);
options.writeMap = DEFAULT_WRITEMAP
? BooleanOptionValueDefTrue(optionsObj, option_writeMap)
: BooleanOptionValue(optionsObj, option_writeMap);
options.metaSync = DEFAULT_METASYNC
? BooleanOptionValueDefTrue(optionsObj, option_metaSync)
: BooleanOptionValue(optionsObj, option_metaSync);
options.mapAsync = DEFAULT_MAPASYNC
? BooleanOptionValueDefTrue(optionsObj, option_mapAsync)
: BooleanOptionValue(optionsObj, option_mapAsync);

OpenWorker* worker = new OpenWorker(
database
Expand Down
18 changes: 16 additions & 2 deletions src/database.h
Expand Up @@ -17,15 +17,29 @@ NL_SYMBOL ( option_createIfMissing , createIfMissing ); // for open()
NL_SYMBOL ( option_errorIfExists , errorIfExists ); // for open()
NL_SYMBOL ( option_mapSize , mapSize ); // for open()
#define DEFAULT_MAPSIZE 10 << 20 // 10 MB
NL_SYMBOL (option_asBuffer , asBuffer ); // for get()
NL_SYMBOL ( option_sync , sync ); // for open()
#define DEFAULT_SYNC false
NL_SYMBOL ( option_readOnly , readOnly ); // for open()
#define DEFAULT_READONLY false
NL_SYMBOL ( option_writeMap , writeMap ); // for open()
#define DEFAULT_WRITEMAP false
NL_SYMBOL ( option_metaSync , metaSync ); // for open()
#define DEFAULT_METASYNC true
NL_SYMBOL ( option_mapAsync , mapAsync ); // for open()
#define DEFAULT_MAPASYNC false
NL_SYMBOL ( option_asBuffer , asBuffer ); // for get()

typedef struct OpenOptions {
bool createIfMissing;
bool errorIfExists;
uint32_t mapSize;
bool sync;
bool readOnly;
bool writeMap;
bool metaSync;
bool mapAsync;
} OpenOptions;


v8::Handle<v8::Value> NLMDB (const v8::Arguments& args);

struct Reference {
Expand Down

0 comments on commit cfe03c5

Please sign in to comment.