const Client = require('.')

class ClientFactory
{
  /**
   * @param {Logger} log
   * @param {ConnectionObserverFactory} connectionObserverFactory
   * @param {net.Socket} netSocket
   */
  constructor(log, connectionObserverFactory, netSocket)
  {
    this.log                = log
    this.netSocket          = netSocket
    this.connectionObserver = connectionObserverFactory.create()
  }

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

module.exports = ClientFactory