This commit is contained in:
aozhiwei 2023-07-13 14:01:39 +08:00
parent 19bee7faf6
commit d8dfd4dd67

View File

@ -1,7 +1,6 @@
const constant = require('./constant'); const constant = require('./constant');
const dbHash = { const dbHash = {};
};
[ [
constant.GAMEDB_NAME, constant.GAMEDB_NAME,
@ -9,24 +8,50 @@ const dbHash = {
constant.BCNFTDB_NAME constant.BCNFTDB_NAME
].forEach( ].forEach(
(item) => { (item) => {
dbHash[item] = {}; dbHash[item] = {
'lockTimes': 0,
'conn': null
};
} }
); );
async function internalCreateConn(name) { async function internalCreateConn(app, name) {
if (!dbHash.hasOwnProperty(name)) {
throw new Error('dbpool error dbname:' + name);
}
const dbObj = dbHash[name];
while (dbObj.lockTimes > 0) {
await new Promise(function (resolve, reject) {
setTimeout(function () {
resolve();
}, 1000);
});
}
if (!dbObj.conn) {
++dbObj.lockTimes;
try {
const {err, conn} = await app.getDbConn(name);
if (err) {
throw new Error('getGBcEventConn error:' + err);
}
dbObj.conn = conn;
} finally {
--dbObj.lockTimes;
}
}
return dbObj.conn;
} }
async function getBcEventConn() { async function getBcEventConn(app) {
return await internalCreateConn(constant.BCEVENTDB_NAME); return await internalCreateConn(app, constant.BCEVENTDB_NAME);
} }
async function getBcNftConn() { async function getBcNftConn(app) {
return await internalCreateConn(constant.BCNFTDB_NAME); return await internalCreateConn(app, constant.BCNFTDB_NAME);
} }
async function getGameConn() { async function getGameConn(app) {
return await internalCreateConn(constant.GAMEDB_NAME); return await internalCreateConn(app, constant.GAMEDB_NAME);
} }
exports.getBcEventConn = getBcEventConn; exports.getBcEventConn = getBcEventConn;