Sha256: b5ed20b8d098f8b43e17612e2c193c8edcf843fdda759458810365f3f1ce9b4e

Contents?: true

Size: 1023 Bytes

Versions: 1

Compression:

Stored size: 1023 Bytes

Contents

require 'gserver'
require 'logger'

# listen to a given port
# accepts data from client
# send ack to client
# close the connection
#
# Can accept multiple client
# Can listen on multiple ports

module Crossover
  class Server < GServer

    def initialize(port, host='127.0.0.1', max_connections = 10, stdlog = $stdout, audit = true, debug = false  )
      if stdlog != $stdout
        @logger = Logger.new(File.expand_path(stdlog) )
      end
      super(port, host, max_connections, $stdout, audit, debug )
    end

    def serve(io)
      data = io.read(1024)
      log "client:#{io.peeraddr[1]} #{io.peeraddr[2]}<#{io.peeraddr[3]}> post #{data.bytesize} bytes\n#{data}"
      puts ""
      io.puts('Bye!')
    end

    def stopping
      log("#{self.class.to_s} #{@host}:#{@port} stop")
      @logger.close
    end

    def log message
      if @stdlog
        @stdlog.puts("[#{Time.new.ctime}] %s" % message)
        @stdlog.flush
      end

      if @logger
        @logger.info message
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
crossover-0.1.6 lib/crossover/server.rb