class Hydra::Message

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"

Public Class Methods

build(hash) click to toggle source

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.

# File lib/hydra/message.rb, line 31
def self.build(hash)
  hash.delete(:class).new(hash)
end
new(opts = {}) click to toggle source

Create a new message. Opts is a hash where the keys are attributes of the message and the values are set to the attribute.

# File lib/hydra/message.rb, line 21
def initialize(opts = {})
  opts.delete :class
  opts.each do |variable,value|
    self.send("#{variable}=",value)
  end
end

Public Instance Methods

serialize(opts = {}) click to toggle source

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

# File lib/hydra/message.rb, line 38
def serialize(opts = {})
  opts.merge({:class => self.class}).inspect
end