def create_listener(options)
      l = TCPServer.new(@host, @port)
      # let 10 requests back up for each request we can handle concurrently.
      # note that this value is often truncated by the OS to numbers like 128
      # or even 5. You may be able to raise this maximum using sysctl (on BSD/OSX)
      # or /proc/sys/net/core/somaxconn on linux 2.6.
      l.listen(@max_clients * 10)
      l.extend Mutex_m # lock around use of the listener object.
      return l
    end
def create_listener(options)
      l = TCPServer.new(@host, @port)
      # let 10 requests back up for each request we can handle concurrently.
      # note that this value is often truncated by the OS to numbers like 128
      # or even 5. You may be able to raise this maximum using sysctl (on BSD/OSX)
      # or /proc/sys/net/core/somaxconn on linux 2.6.
      l.listen(@max_clients * 10)
      l.extend Mutex_m # lock around use of the listener object.
      return l
    end
Initializes a new Jaws server object. Pass it a hash of options (:Host, :Port, :MaxClients, and :SystemCores valid)
 You can re-implement this in a derived class in order to use a different
 mechanism to listen for connections. It should return
 an object that responds to accept() by returning an open connection to a
 client. It also has to respond to synchronize and yield to the block
 given to that method and be thread safe in that block. It must also
 respond to close() by refusing to accept any further connections and
 returning true from closed?() thereafter. The accept() call may be interrupted
 by a GracefulExit error, it should not block or do anything special with this
 error.