const SocketServer = require('.')

class SocketServerFactory
{
  /**
   * @param {Logger} log
   * @param {ConnectionObserverFactory} connectionObserverFactory
   * @param {net.Server} netServer
   */
  constructor(log, connectionObserverFactory, netServer)
  {
    this.log                = log
    this.netServer          = netServer
    this.connectionObserver = connectionObserverFactory.create()
  }

  /**
   * @returns {SocketServer}
   */
  create()
  {
    return new SocketServer(this.log, this.connectionObserver, this.netServer)
  }
}

module.exports = SocketServerFactory