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)
|
||||
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.
|
||||
* @private
|
||||
@ -397,22 +384,9 @@ Pool.prototype.unlisten = co(function* unlisten() {
|
||||
if (!this.options.listen)
|
||||
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.
|
||||
* @private
|
||||
|
||||
@ -16,12 +16,12 @@ tcp.createSocket = function createSocket(port, host, proxy) {
|
||||
|
||||
tcp.createServer = function createServer() {
|
||||
var server = new EventEmitter();
|
||||
server.listen = function listen(port, host, callback) {
|
||||
callback();
|
||||
server.listen = function listen(port, host) {
|
||||
server.emit('listening');
|
||||
return Promise.resolve();
|
||||
};
|
||||
server.close = function close(callback) {
|
||||
callback();
|
||||
server.close = function close() {
|
||||
return Promise.resolve();
|
||||
};
|
||||
server.address = function address() {
|
||||
return {
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var net = require('net');
|
||||
var tcp = exports;
|
||||
|
||||
@ -14,5 +15,46 @@ tcp.createSocket = function createSocket(port, host, proxy) {
|
||||
};
|
||||
|
||||
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