text: var util = require('util')
  
  var EventEmitter = require('eventemitter3')
  var debug = require('debug')('vnc:server')
  
  var VncConnection = require('./connection')
  
  function VncServer(server, options) {
    this.options = options
  
    this._bound = {
      _listeningListener: this._listeningListener.bind(this)
    , _connectionListener: this._connectionListener.bind(this)
    , _closeListener: this._closeListener.bind(this)
    , _errorListener: this._errorListener.bind(this)
    }
  
    this.server = server
      .on('listening', this._bound._listeningListener)
      .on('connection', this._bound._connectionListener)
      .on('close', this._bound._closeListener)
      .on('error', this._bound._errorListener)
  }
  
  util.inherits(VncServer, EventEmitter)
  
  VncServer.prototype.close = function() {
    this.server.close()
  }
  
  VncServer.prototype.listen = function() {
    this.server.listen.apply(this.server, arguments)
  }
  
  VncServer.prototype._listeningListener = function() {
    this.emit('listening')
  }
  
  VncServer.prototype._connectionListener = function(conn) {
    debug('connection', conn.remoteAddress, conn.remotePort)
    this.emit('connection', new VncConnection(conn, this.options))
  }
  
  VncServer.prototype._closeListener = function() {
    this.emit('close')
  }
  
  VncServer.prototype._errorListener = function(err) {
    this.emit('error', err)
  }
  
  module.exports = VncServer
  