complete redesign: use nodejs on server instead of php - documentation to be updated
This commit is contained in:
68
nodejs/node_modules/mysql/lib/PoolNamespace.js
generated
vendored
Normal file
68
nodejs/node_modules/mysql/lib/PoolNamespace.js
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
var PoolSelector = require('./PoolSelector');
|
||||
|
||||
module.exports = PoolNamespace;
|
||||
|
||||
/**
|
||||
* PoolNamespace
|
||||
*/
|
||||
function PoolNamespace(cluster, pattern, selector) {
|
||||
this._cluster = cluster;
|
||||
this._pattern = pattern;
|
||||
this._selector = new PoolSelector[selector]();
|
||||
}
|
||||
|
||||
PoolNamespace.prototype.getConnection = function(cb) {
|
||||
var clusterNode = this._getClusterNode();
|
||||
var cluster = this._cluster;
|
||||
var namespace = this;
|
||||
|
||||
if (clusterNode === null) {
|
||||
var err = null;
|
||||
|
||||
if (this._cluster._findNodeIds(this._pattern, true).length !== 0) {
|
||||
err = new Error('Pool does not have online node.');
|
||||
err.code = 'POOL_NONEONLINE';
|
||||
} else {
|
||||
err = new Error('Pool does not exist.');
|
||||
err.code = 'POOL_NOEXIST';
|
||||
}
|
||||
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
cluster._getConnection(clusterNode, function(err, connection) {
|
||||
var retry = err && cluster._canRetry
|
||||
&& cluster._findNodeIds(namespace._pattern).length !== 0;
|
||||
|
||||
if (retry) {
|
||||
return namespace.getConnection(cb);
|
||||
}
|
||||
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
cb(null, connection);
|
||||
});
|
||||
};
|
||||
|
||||
PoolNamespace.prototype._getClusterNode = function _getClusterNode() {
|
||||
var foundNodeIds = this._cluster._findNodeIds(this._pattern);
|
||||
var nodeId;
|
||||
|
||||
switch (foundNodeIds.length) {
|
||||
case 0:
|
||||
nodeId = null;
|
||||
break;
|
||||
case 1:
|
||||
nodeId = foundNodeIds[0];
|
||||
break;
|
||||
default:
|
||||
nodeId = this._selector(foundNodeIds);
|
||||
break;
|
||||
}
|
||||
|
||||
return nodeId !== null
|
||||
? this._cluster._getNode(nodeId)
|
||||
: null;
|
||||
};
|
Reference in New Issue
Block a user