Sha256: 0f77d3f3cb005f19fcf5ebec835b15e370b7fc3d7615e396cb212b9db70cfe64

Contents?: true

Size: 965 Bytes

Versions: 7

Compression:

Stored size: 965 Bytes

Contents

require 'celluloid/io'
require 'celluloid/autostart'
require 'baleen/utils/highlighter'

module Baleen
  class Client
    include Celluloid::IO
    finalizer :close

    def initialize(host, port, debug=false)
      Celluloid.logger = nil unless debug
      @socket = TCPSocket.open(host, port)
    end

    def request(request)
      @socket.puts(request.to_json)
    end

    def wait_response
      loop {
        response = handle_response(@socket.gets)
        return response if response
      }
    end

    def close
      @socket.close if @socket
      hl_warn "Connection closed"

    rescue IOError; nil
    end

    def handle_response(msg)
      if msg.nil?
        raise RuntimeError, 'Connection closed by server'
      end

      response = Serializable.deserialize(msg)

      if response.is_a? Message::Base
        response.print_message
      end

      if response.terminate?
        response
      else
        nil
      end
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
baleen-0.2.5 lib/baleen/client.rb
baleen-0.2.4 lib/baleen/client.rb
baleen-0.2.3 lib/baleen/client.rb
baleen-0.2.2 lib/baleen/client.rb
baleen-0.2.1 lib/baleen/client.rb
baleen-0.2.0 lib/baleen/client.rb
baleen-0.1.2 lib/baleen/client.rb