Sha256: fb0644236323fd6714bb8af91c1386b25e98fa05a780c43ee0849056f444203c

Contents?: true

Size: 862 Bytes

Versions: 8

Compression:

Stored size: 862 Bytes

Contents

require 'socket'

module Denko
  module Connection
    class TCPConnectError < StandardError; end

    class TCP < Base
      def initialize(host="127.0.0.1", port=3466)
        @host = host
        @port = port
      end

      def to_s
        "#{@host}:#{@port}"
      end

    private

      def connect
        print "Connecting to TCP at: #{self.to_s}... "
        connection = Timeout::timeout(10) do
          TCPSocket.open(@host, @port)
        end
        puts "Connected"
        connection
      rescue => error
        raise TCPConnectError, error.message
      end

      def _write(message)
        loop do
          if IO.select(nil, [io], nil, 0)
            io.syswrite(message)
            break
          end
        end
      end

      def _read
        IO.select([io], nil, nil, 0) && io.gets.gsub(/\n\z/, "")
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
denko-0.14.0 lib/denko/connection/tcp.rb
denko-0.13.6 lib/denko/connection/tcp.rb
denko-0.13.5 lib/denko/connection/tcp.rb
denko-0.13.4 lib/denko/connection/tcp.rb
denko-0.13.3 lib/denko/connection/tcp.rb
denko-0.13.2 lib/denko/connection/tcp.rb
denko-0.13.1 lib/denko/connection/tcp.rb
denko-0.13.0 lib/denko/connection/tcp.rb