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'
+