pomelo-upgrade
Version:
53 lines (46 loc) • 1.07 kB
JavaScript
;
const EventEmitter = require('events').EventEmitter;
const utils = require('../../util/utils');
const TcpSocket = require('./tcpsocket');
const ST_STARTED = 1;
const ST_CLOSED = 2;
// private protocol, no need exports
const HEAD_SIZE = 4;
class TcpProcessor extends EventEmitter
{
constructor(closeMethod)
{
super();
this.closeMethod = closeMethod;
this.state = ST_STARTED;
}
add(socket, data)
{
if (this.state !== ST_STARTED)
{
return;
}
const tcpSocket = new TcpSocket(socket, {
headSize : HEAD_SIZE,
headHandler : utils.headHandler,
closeMethod : this.closeMethod
});
this.emit('connection', tcpSocket);
socket.emit('data', data);
}
close()
{
if (this.state !== ST_STARTED)
{
return;
}
this.state = ST_CLOSED;
}
}
/**
* tcp socket protocol processor
*/
module.exports = function(closeMethod)
{
return new TcpProcessor(closeMethod);
};