tcp: make server promise based.
This commit is contained in:
parent
63b39cec56
commit
212a69697e
@ -368,22 +368,9 @@ Pool.prototype.listen = co(function* listen() {
|
|||||||
if (!this.options.listen)
|
if (!this.options.listen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
yield this._listen();
|
yield this.server.listen(this.address.port, '0.0.0.0');
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
|
||||||
* Listen on server socket.
|
|
||||||
* @private
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
|
|
||||||
Pool.prototype._listen = function _listen() {
|
|
||||||
var self = this;
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
self.server.listen(self.address.port, '0.0.0.0', co.wrap(resolve, reject));
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stop listening on server socket.
|
* Stop listening on server socket.
|
||||||
* @private
|
* @private
|
||||||
@ -397,22 +384,9 @@ Pool.prototype.unlisten = co(function* unlisten() {
|
|||||||
if (!this.options.listen)
|
if (!this.options.listen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
yield this._unlisten();
|
yield this.server.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
|
||||||
* Unlisten on server socket.
|
|
||||||
* @private
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
|
|
||||||
Pool.prototype._unlisten = function unlisten() {
|
|
||||||
var self = this;
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
self.server.close(co.wrap(resolve, reject));
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle incoming connection.
|
* Handle incoming connection.
|
||||||
* @private
|
* @private
|
||||||
|
|||||||
@ -16,12 +16,12 @@ tcp.createSocket = function createSocket(port, host, proxy) {
|
|||||||
|
|
||||||
tcp.createServer = function createServer() {
|
tcp.createServer = function createServer() {
|
||||||
var server = new EventEmitter();
|
var server = new EventEmitter();
|
||||||
server.listen = function listen(port, host, callback) {
|
server.listen = function listen(port, host) {
|
||||||
callback();
|
|
||||||
server.emit('listening');
|
server.emit('listening');
|
||||||
|
return Promise.resolve();
|
||||||
};
|
};
|
||||||
server.close = function close(callback) {
|
server.close = function close() {
|
||||||
callback();
|
return Promise.resolve();
|
||||||
};
|
};
|
||||||
server.address = function address() {
|
server.address = function address() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var EventEmitter = require('events').EventEmitter;
|
||||||
var net = require('net');
|
var net = require('net');
|
||||||
var tcp = exports;
|
var tcp = exports;
|
||||||
|
|
||||||
@ -14,5 +15,46 @@ tcp.createSocket = function createSocket(port, host, proxy) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
tcp.createServer = function createServer() {
|
tcp.createServer = function createServer() {
|
||||||
return new net.Server();
|
var server = new net.Server();
|
||||||
|
var ee = new EventEmitter();
|
||||||
|
|
||||||
|
ee.listen = function listen(port, host) {
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
server.listen(port, host, wrap(resolve, reject));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
ee.close = function close() {
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
server.close(wrap(resolve, reject));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
ee.address = function address() {
|
||||||
|
return server.address();
|
||||||
|
};
|
||||||
|
|
||||||
|
server.on('listening', function() {
|
||||||
|
ee.emit('listening');
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on('connection', function(socket) {
|
||||||
|
ee.emit('connection', socket);
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on('error', function(err) {
|
||||||
|
ee.emit('error', err);
|
||||||
|
});
|
||||||
|
|
||||||
|
return ee;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function wrap(resolve, reject) {
|
||||||
|
return function(err, result) {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
resolve(result);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user