Module: Einhorn::Client::Transport

Defined in:
lib/einhorn/client.rb

Overview

Keep this in this file so client can be loaded entirely standalone by user code.

Constant Summary collapse

ParseError =
defined?(Psych::SyntaxError) ? Psych::SyntaxError : ArgumentError

Class Method Summary collapse

Class Method Details

.deserialize_message(line) ⇒ Object



29
30
31
32
# File 'lib/einhorn/client.rb', line 29

def self.deserialize_message(line)
  serialized = URI.unescape(line)
  YAML.load(serialized)
end

.receive_message(socket) ⇒ Object



18
19
20
21
# File 'lib/einhorn/client.rb', line 18

def self.receive_message(socket)
  line = socket.readline
  deserialize_message(line)
end

.send_message(socket, message) ⇒ Object



13
14
15
16
# File 'lib/einhorn/client.rb', line 13

def self.send_message(socket, message)
  line = serialize_message(message)
  socket.write(line)
end

.serialize_message(message) ⇒ Object



23
24
25
26
27
# File 'lib/einhorn/client.rb', line 23

def self.serialize_message(message)
  serialized = YAML.dump(message)
  escaped = URI.escape(serialized, "%\n")
  escaped + "\n"
end