Method: UState::Client#read_message

Defined in:
lib/ustate/client.rb

#read_message(s) ⇒ Object

Read a message from a stream



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/ustate/client.rb', line 74

def read_message(s)
  if buffer = s.read(4) and buffer.size == 4
    length = buffer.unpack('N').first
    begin
      str = s.read length
      message = UState::Message.decode str
    rescue => e
      puts "Message was #{str.inspect}"
      raise
    end
    
    unless message.ok
      puts "Failed"
      raise ServerError, message.error
    end
    
    message
  else
    raise InvalidResponse, "unexpected EOF"
  end
end