Module: Hydra::MessagingIO

Included in:
Pipe, SSH
Defined in:
lib/hydra/messaging_io.rb

Overview

Module that implemets methods that auto-serialize and deserialize messaging objects.

Defined Under Namespace

Classes: UnprocessableMessage

Instance Method Summary collapse

Instance Method Details

#closeObject

Closes the IO object.



29
30
31
32
# File 'lib/hydra/messaging_io.rb', line 29

def close
  @reader.close if @reader
  @writer.close if @writer
end

#getsObject

Read a Message from the input IO object. Automatically build a message from the response and return it.

IO.gets
  => Hydra::Message # or subclass

Raises:

  • (IOError)


10
11
12
13
14
15
# File 'lib/hydra/messaging_io.rb', line 10

def gets
  raise IOError unless @reader
  message = @reader.gets
  return nil unless message
  return Message.build(eval(message.chomp))
end

#write(message) ⇒ Object

Write a Message to the output IO object. It will automatically serialize a Message object.

IO.write Hydra::Message.new


20
21
22
23
24
25
26
# File 'lib/hydra/messaging_io.rb', line 20

def write(message)
  raise IOError unless @writer
  raise UnprocessableMessage unless message.is_a?(Hydra::Message)
  @writer.write(message.serialize+"\n")
rescue Errno::EPIPE
  raise IOError
end