Sha256: 11c1fe0342de7dc1ff182e581831c9ee1a7cb765a980299067483f97c177d516

Contents?: true

Size: 560 Bytes

Versions: 1

Compression:

Stored size: 560 Bytes

Contents

require 'socket'
require_relative '../addr'
require_relative 'sock'

module Kamerling
  module Server
    class TCP < Sock
      private

      def handle_connection(socket)
        client_addr = Addr[*socket.remote_address.ip_unpack, :TCP]
        input       = socket.read
        handle input, client_addr
      ensure
        socket.close
      end

      def run_loop
        Socket.tcp_server_loop(*addr) { |socket| handle_connection socket }
      end

      def wait_till_started
        loop { break if addr.connectable? }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kamerling-0.0.3 lib/kamerling/server/tcp.rb