mirror of
https://github.com/avwo/whistle.git
synced 2026-10-26 12:02:30 +08:00
refactor: Refine code
This commit is contained in:
+18
-35
@@ -1,12 +1,16 @@
|
||||
var tls = require('tls');
|
||||
var Q = require('q');
|
||||
var ca = require('./ca');
|
||||
var getServer = require('../util/get-server').create(createTLSServer);
|
||||
|
||||
var MAX_SERVERS = 320;
|
||||
var MAX_PORT = 60000;
|
||||
var curPort = 42000;
|
||||
var TIMEOUT = 6000;
|
||||
// var DELAY = 100;
|
||||
|
||||
function createTLSServer(options, listener) {
|
||||
return tls.createServer(options, listener);
|
||||
}
|
||||
|
||||
function ServerAgent() {
|
||||
this._cache = {};
|
||||
this._serverCount = 0;
|
||||
@@ -14,7 +18,7 @@ function ServerAgent() {
|
||||
|
||||
var proto = ServerAgent.prototype;
|
||||
|
||||
proto.createServer = function createServer(hostname, secureConnectionListener, callback) {
|
||||
proto.createServer = function createServer(hostname, listener, callback) {
|
||||
var self = this;
|
||||
var cache = self._cache;
|
||||
|
||||
@@ -33,19 +37,18 @@ proto.createServer = function createServer(hostname, secureConnectionListener, c
|
||||
}
|
||||
|
||||
self.freeServer();
|
||||
getServer(ca.createCertificate(hostname), secureConnectionListener,
|
||||
function(port, server) {
|
||||
var removeServer = function() {
|
||||
self.removeServer(hostname);
|
||||
};
|
||||
server.on('error', removeServer);
|
||||
promise.server = server;
|
||||
var timeout = setTimeout(removeServer, TIMEOUT);
|
||||
server.once('secureConnection', function() {
|
||||
clearTimeout(timeout);
|
||||
getServer(ca.createCertificate(hostname), listener, function(server, port) {
|
||||
var removeServer = function() {
|
||||
self.removeServer(hostname);
|
||||
};
|
||||
server.on('error', removeServer);
|
||||
promise.server = server;
|
||||
var timeout = setTimeout(removeServer, TIMEOUT);
|
||||
server.once('secureConnection', function() {
|
||||
clearTimeout(timeout);
|
||||
});
|
||||
defer.resolve(port);
|
||||
});
|
||||
defer.resolve(port);
|
||||
});
|
||||
self._serverCount++;
|
||||
|
||||
return self;
|
||||
@@ -116,26 +119,6 @@ proto.freeServer = function() {
|
||||
// }
|
||||
//};
|
||||
|
||||
function getServer(options, secureConnectionListener, callback) {
|
||||
curPort++;
|
||||
if (curPort > MAX_PORT) {
|
||||
curPort = 30001;
|
||||
} else if (curPort % 10 === 0) {
|
||||
curPort++;
|
||||
}
|
||||
|
||||
var server = tls.createServer(options, secureConnectionListener);
|
||||
var next = function() {
|
||||
getServer(options, secureConnectionListener, callback);
|
||||
};
|
||||
server.on('error', next);
|
||||
var port = curPort;
|
||||
server.listen(port, function() {
|
||||
server.removeListener('error', next);
|
||||
callback(port, server);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = ServerAgent;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user