6 # A connection to an ICS server
8 class Connection < Qt::Object
11 signal_map(:hostFound => nil,
13 :received_line => 'receivedLine(QString)',
14 :received_text => 'receivedText(QString)')
16 def initialize(host, port)
19 @create_socket = lambda do
20 puts "connecting to #{host}:#{port}"
21 s = Qt::TcpSocket.new(self)
22 connect(s, SIGNAL(:hostFound), self, SIGNAL(:hostFound))
23 s.connect(s, SIGNAL(:connected), self, SIGNAL(:established))
24 s.on(:readyRead) { process_line }
25 s.connect_to_host(host, port)
36 while @socket.can_read_line
37 line = @socket.read_line.to_s
38 line = @buffer + line.gsub("\r", '')
40 emit receivedLine(line)
44 if (size = @socket.bytes_available) > 0
45 data = @socket.read_all
46 @buffer += data.to_s.gsub("\r", '')
47 emit receivedText(@buffer)
53 @socket = @create_socket.call
62 puts "> #{text}" if @debug
64 @unsent_text += @text + "\n"
74 os = Qt::TextStream.new(@socket)