-
Notifications
You must be signed in to change notification settings - Fork 147
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
JS driver v1.5.0-alpha01: Checking in transpiled files for bower
- Loading branch information
Showing
15 changed files
with
4,288 additions
and
1,893 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
139 changes: 139 additions & 0 deletions
139
lib/v1/internal/least-connected-load-balancing-strategy.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
'use strict'; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.LEAST_CONNECTED_STRATEGY_NAME = undefined; | ||
|
||
var _maxSafeInteger = require('babel-runtime/core-js/number/max-safe-integer'); | ||
|
||
var _maxSafeInteger2 = _interopRequireDefault(_maxSafeInteger); | ||
|
||
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); | ||
|
||
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); | ||
|
||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
|
||
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
|
||
var _createClass2 = require('babel-runtime/helpers/createClass'); | ||
|
||
var _createClass3 = _interopRequireDefault(_createClass2); | ||
|
||
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); | ||
|
||
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
|
||
var _inherits2 = require('babel-runtime/helpers/inherits'); | ||
|
||
var _inherits3 = _interopRequireDefault(_inherits2); | ||
|
||
var _roundRobinArrayIndex = require('./round-robin-array-index'); | ||
|
||
var _roundRobinArrayIndex2 = _interopRequireDefault(_roundRobinArrayIndex); | ||
|
||
var _loadBalancingStrategy = require('./load-balancing-strategy'); | ||
|
||
var _loadBalancingStrategy2 = _interopRequireDefault(_loadBalancingStrategy); | ||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|
||
/** | ||
* Copyright (c) 2002-2017 "Neo Technology,"," | ||
* Network Engine for Objects in Lund AB [http://neotechnology.com] | ||
* | ||
* This file is part of Neo4j. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
var LEAST_CONNECTED_STRATEGY_NAME = exports.LEAST_CONNECTED_STRATEGY_NAME = 'least_connected'; | ||
|
||
var LeastConnectedLoadBalancingStrategy = function (_LoadBalancingStrateg) { | ||
(0, _inherits3.default)(LeastConnectedLoadBalancingStrategy, _LoadBalancingStrateg); | ||
|
||
/** | ||
* @constructor | ||
* @param {Pool} connectionPool the connection pool of this driver. | ||
*/ | ||
function LeastConnectedLoadBalancingStrategy(connectionPool) { | ||
(0, _classCallCheck3.default)(this, LeastConnectedLoadBalancingStrategy); | ||
|
||
var _this = (0, _possibleConstructorReturn3.default)(this, (LeastConnectedLoadBalancingStrategy.__proto__ || (0, _getPrototypeOf2.default)(LeastConnectedLoadBalancingStrategy)).call(this)); | ||
|
||
_this._readersIndex = new _roundRobinArrayIndex2.default(); | ||
_this._writersIndex = new _roundRobinArrayIndex2.default(); | ||
_this._connectionPool = connectionPool; | ||
return _this; | ||
} | ||
|
||
/** | ||
* @inheritDoc | ||
*/ | ||
|
||
|
||
(0, _createClass3.default)(LeastConnectedLoadBalancingStrategy, [{ | ||
key: 'selectReader', | ||
value: function selectReader(knownReaders) { | ||
return this._select(knownReaders, this._readersIndex); | ||
} | ||
|
||
/** | ||
* @inheritDoc | ||
*/ | ||
|
||
}, { | ||
key: 'selectWriter', | ||
value: function selectWriter(knownWriters) { | ||
return this._select(knownWriters, this._writersIndex); | ||
} | ||
}, { | ||
key: '_select', | ||
value: function _select(addresses, roundRobinIndex) { | ||
var length = addresses.length; | ||
if (length === 0) { | ||
return null; | ||
} | ||
|
||
// choose start index for iteration in round-rodin fashion | ||
var startIndex = roundRobinIndex.next(length); | ||
var index = startIndex; | ||
|
||
var leastConnectedAddress = null; | ||
var leastActiveConnections = _maxSafeInteger2.default; | ||
|
||
// iterate over the array to find least connected address | ||
do { | ||
var address = addresses[index]; | ||
var activeConnections = this._connectionPool.activeResourceCount(address); | ||
|
||
if (activeConnections < leastActiveConnections) { | ||
leastConnectedAddress = address; | ||
leastActiveConnections = activeConnections; | ||
} | ||
|
||
// loop over to the start of the array when end is reached | ||
if (index === length - 1) { | ||
index = 0; | ||
} else { | ||
index++; | ||
} | ||
} while (index !== startIndex); | ||
|
||
return leastConnectedAddress; | ||
} | ||
}]); | ||
return LeastConnectedLoadBalancingStrategy; | ||
}(_loadBalancingStrategy2.default); | ||
|
||
exports.default = LeastConnectedLoadBalancingStrategy; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
'use strict'; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
|
||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
|
||
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
|
||
var _createClass2 = require('babel-runtime/helpers/createClass'); | ||
|
||
var _createClass3 = _interopRequireDefault(_createClass2); | ||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|
||
/** | ||
* Copyright (c) 2002-2017 "Neo Technology,"," | ||
* Network Engine for Objects in Lund AB [http://neotechnology.com] | ||
* | ||
* This file is part of Neo4j. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
/** | ||
* A facility to select most appropriate reader or writer among the given addresses for request processing. | ||
*/ | ||
var LoadBalancingStrategy = function () { | ||
function LoadBalancingStrategy() { | ||
(0, _classCallCheck3.default)(this, LoadBalancingStrategy); | ||
} | ||
|
||
(0, _createClass3.default)(LoadBalancingStrategy, [{ | ||
key: 'selectReader', | ||
|
||
|
||
/** | ||
* Select next most appropriate reader from the list of given readers. | ||
* @param {string[]} knownReaders an array of currently known readers to select from. | ||
* @return {string} most appropriate reader or <code>null</code> if given array is empty. | ||
*/ | ||
value: function selectReader(knownReaders) { | ||
throw new Error('Abstract function'); | ||
} | ||
|
||
/** | ||
* Select next most appropriate writer from the list of given writers. | ||
* @param {string[]} knownWriters an array of currently known writers to select from. | ||
* @return {string} most appropriate writer or <code>null</code> if given array is empty. | ||
*/ | ||
|
||
}, { | ||
key: 'selectWriter', | ||
value: function selectWriter(knownWriters) { | ||
throw new Error('Abstract function'); | ||
} | ||
}]); | ||
return LoadBalancingStrategy; | ||
}(); | ||
|
||
exports.default = LoadBalancingStrategy; |
Oops, something went wrong.