-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathenv.js
More file actions
101 lines (97 loc) · 2.17 KB
/
env.js
File metadata and controls
101 lines (97 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
var BDB = require('../build/default/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;