Sha256: 605b5f8b5b8312df63396b6a7dab3cc2c17dbf1c16baf6f79063095124bae799

Contents?: true

Size: 774 Bytes

Versions: 6

Compression:

Stored size: 774 Bytes

Contents

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

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

    def initialize(host, port=12345)
      @socket = TCPSocket.open(host, port)
    end

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

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

    def close
      @socket.close if @socket
      info "connection closed"

    rescue IOError; nil
    end

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

      Baleen::Message::Decoder.new(response).decode
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
baleen-0.1.1 lib/baleen/client.rb
baleen-0.1.0 lib/baleen/client.rb
baleen-0.0.12 lib/baleen/client.rb
baleen-0.0.11 lib/baleen/client.rb
baleen-0.0.10 lib/baleen/client.rb
baleen-0.0.9 lib/baleen/client.rb