text: //
  //  Created by Mingliang Chen on 17/8/1.
  //  illuspas[a]gmail.com
  //  Copyright (c) 2018 Nodemedia. All rights reserved.
  //
  const Logger = require('./node_core_logger');
  
  const Net = require('net');
  const NodeRtmpSession = require('./node_rtmp_session');
  const NodeCoreUtils = require('./node_core_utils');
  
  const context = require('./node_core_ctx');
  
  const RTMP_PORT = process.env.PORT || 1935;
  
  class NodeRtmpServer {
    constructor(config) {
      config.rtmp.port = this.port = config.rtmp.port ? config.rtmp.port : RTMP_PORT;
      this.tcpServer = Net.createServer((socket) => {
        let session = new NodeRtmpSession(config, socket);
        session.run();
      })
    }
  
    run() {
      this.tcpServer.listen(this.port, () => {
        Logger.log(`Node Media Rtmp Server started on port: ${this.port}`);
      });
  
      this.tcpServer.on('error', (e) => {
        Logger.error(`Node Media Rtmp Server ${e}`);
      });
  
      this.tcpServer.on('close', () => {
        Logger.log('Node Media Rtmp Server Close.');
      });
    }
  
    stop() {
      this.tcpServer.close();
      context.sessions.forEach((session, id) => {
        if (session instanceof NodeRtmpSession)
          session.stop();
      });
    }
  }
  
  module.exports = NodeRtmpServer
  