Sha256: 38376e6159b74b3a5f7c73ab88329af573cfeafadbd77c5058868f81c4c85e4f
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
module Hydra #:nodoc: # Module that implemets methods that auto-serialize and deserialize messaging # objects. module MessagingIO # Read a Message from the input IO object. Automatically build # a message from the response and return it. # # IO.gets # => Hydra::Message # or subclass def gets raise IOError unless @reader message = @reader.gets return nil unless message return Message.build(eval(message.chomp)) end # Write a Message to the output IO object. It will automatically # serialize a Message object. # IO.write Hydra::Message.new def write(message) raise IOError unless @writer raise UnprocessableMessage unless message.is_a?(Hydra::Message) begin @writer.write(message.serialize+"\n") rescue Errno::EPIPE raise IOError end end # Closes the IO object. def close @reader.close if @reader @writer.close if @writer end # IO will return this error if it cannot process a message. # For example, if you tried to write a string, it would fail, # because the string is not a message. class UnprocessableMessage < RuntimeError attr_accessor :message # Allow a custom message for the exception. def initialize(message = "Message expected") @message = message end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hydra-0.3.0 | lib/hydra/io.rb |