'use strict'; const net = require('net'); const EventEmitter = require('events').EventEmitter; const Connection = require('./connection'); const ConnectionConfig = require('./connection_config'); // TODO: inherit Server from net.Server class Server extends EventEmitter { constructor() { super(); this.connections = []; this._server = net.createServer(this._handleConnection.bind(this)); } _handleConnection(socket) { const connectionConfig = new ConnectionConfig({ stream: socket, isServer: true }); const connection = new Connection({ config: connectionConfig }); this.emit('connection', connection); } listen(port) { this._port = port; this._server.listen.apply(this._server, arguments); return this; } close(cb) { this._server.close(cb); } } module.exports = Server;