UNPKG

pomelo-upgrade

Version:
53 lines (46 loc) 1.07 kB
'use strict'; 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); };