lib/hydra/message.rb in hydra-0.2.0 vs lib/hydra/message.rb in hydra-0.3.0

- old
+ new

@@ -1,18 +1,44 @@ module Hydra #:nodoc: - class Message #:nodoc: + # Base message object. Used to pass messages with parameters around + # via IO objects. + # class MyMessage < Hydra::Message + # attr_accessor :my_var + # def serialize + # super(:my_var => @my_var) + # end + # end + # m = MyMessage.new(:my_var => 'my value') + # m.my_var + # => "my value" + # m.serialize + # => "{:class=>TestMessage::MyMessage, :my_var=>\"my value\"}" + # Hydra::Message.build(eval(@m.serialize)).my_var + # => "my value" + class Message + # Create a new message. Opts is a hash where the keys + # are attributes of the message and the values are + # set to the attribute. def initialize(opts = {}) - opts.each do |k,v| - self.send(k,v) + opts.each do |variable,value| + self.send("#{variable}=",value) end end + + # Build a message from a hash. The hash must contain + # the :class symbol, which is the class of the message + # that it will build to. def self.build(hash) hash.delete(:class).new(hash) end + # Serialize the message for output on an IO channel. + # This is really just a string representation of a hash + # with no newlines. It adds in the class automatically def serialize(opts = {}) - opts[:class] = self.class - opts.inspect + opts.merge({:class => self.class}).inspect end end end -require 'hydra/message/runner_requests_file' + +require 'hydra/message/runner_messages' +