UNPKG

bdb-fork-grimen

Version:

Berkeley DB(5.X) bindings for node

102 lines (97 loc) 2.21 kB
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. var BDB = require('bindings')('bdb_bindings'); var DbEnv = BDB.DbEnv; /** * Open a database environment * * Required: * * - 'home' The Database home, given as a string * * Optional: * * - 'flags' Bitwise OR'd BDB flags. Defaults are: * - DB_CREATE * - DB_INIT_LOCK * - DB_INIT_LOG * - DB_INIT_MPOOL * - DB_INIT_TXN * - DB_RECOVER * - DB_THREAD * - 'mode' Unix File Permissions to set. Default is 0660. * * @param {Object} options * @api public */ DbEnv.prototype.openSync = function(options) { var flags = BDB.DB_CREATE | BDB.DB_INIT_LOCK | BDB.DB_INIT_LOG | BDB.DB_INIT_MPOOL | BDB.DB_INIT_TXN | BDB.DB_RECOVER | BDB.DB_THREAD; var mode = 0; if (!options) { throw new Error('options required'); } if (!options.home) { throw new Error('options.home required'); } if (options.flags) { flags = options.flags; } if (options.mode) { mode = options.mode; } return this._openSync(options.home, flags, mode); }; /** * Close a database environment * * Optional: * * - 'flags' Bitwise OR'd BDB flags. Defaults is DB_FORCESYNC * * @param {Object} options * @api public */ DbEnv.prototype.closeSync = function(options) { var flags = BDB.DB_FORCESYNC; if (options) { if (options.flags) { flags = options.flags; } } return this._closeSync(flags); }; /** * TXN Checkpoint wrapper * * Optional: * - 'kbyte' Perform checkpoint if MORE than kbyte kilbytes have been written * - 'min' Perform checkpoint if MORE than min minutes have passed * * @param {Object} options * @param {Function} callback * @api public */ DbEnv.prototype.txnCheckpoint = function(options, callback) { var kbyte = 0; var min = 0; var flags = BDB.DB_FORCE; if (options) { if (options.kbyte) { kbyte = options.kbyte; } if (options.min) { min = options.min; } if (kbyte || min) { flags = 0; } } return this._txnCheckpoint(kbyte, min, flags, callback); }; exports.DbEnv = DbEnv;