First Commit
This commit is contained in:
commit
601e886c14
2123 files changed
+334815
No files matched your search
+46
@@ -0,0 +1,46 @@
|
||||
'use strict';
|
||||
|
||||
const Aspect = require('./operation').Aspect;
|
||||
const defineAspects = require('./operation').defineAspects;
|
||||
const OperationBase = require('./operation').OperationBase;
|
||||
|
||||
class CloseOperation extends OperationBase {
|
||||
constructor(client, force) {
|
||||
super();
|
||||
this.client = client;
|
||||
this.force = force;
|
||||
}
|
||||
|
||||
execute(callback) {
|
||||
const client = this.client;
|
||||
const force = this.force;
|
||||
const completeClose = err => {
|
||||
client.emit('close', client);
|
||||
for (const item of client.s.dbCache) {
|
||||
item[1].emit('close', client);
|
||||
}
|
||||
|
||||
client.removeAllListeners('close');
|
||||
callback(err, null);
|
||||
};
|
||||
|
||||
if (client.topology == null) {
|
||||
completeClose();
|
||||
return;
|
||||
}
|
||||
|
||||
client.topology.close(force, err => {
|
||||
const autoEncrypter = client.topology.s.options.autoEncrypter;
|
||||
if (!autoEncrypter) {
|
||||
completeClose(err);
|
||||
return;
|
||||
}
|
||||
|
||||
autoEncrypter.teardown(force, err2 => completeClose(err || err2));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
defineAspects(CloseOperation, [Aspect.SKIP_SESSION]);
|
||||
|
||||
module.exports = CloseOperation;
|
||||
Reference in new issue
Block a user