Module: RightScale::Serializable::InstanceMethods

Defined in:
lib/right_agent/serialize/serializable.rb

Instance Method Summary collapse

Instance Method Details

#==(other) ⇒ Object

Use serialized members to compare two serializable instances

Parameters

other(Serializable)

Other instance to compare self to

Return

true

If both serializable have identical serialized fields

false

Otherwise



107
108
109
110
# File 'lib/right_agent/serialize/serializable.rb', line 107

def ==(other)
  return false unless other.respond_to?(:serialized_members)
  self.serialized_members == other.serialized_members
end

#serialized_membersObject

Implement in serializable class and return array of fields that should be given to constructor when deserializing

Raise

RuntimeError

Always raised. Override in heir.

Raises:

  • (NotImplemented)


95
96
97
# File 'lib/right_agent/serialize/serializable.rb', line 95

def serialized_members
  raise NotImplemented.new("Must be implemented by #{self.class.name}")
end

#to_json(*a) ⇒ Object

Called by JSON serializer to serialise object’s members

Parameters

*a(Array)

Pass-through to Hash’s ‘to_json’ method

Return

(String)

JSON representation



83
84
85
86
87
88
# File 'lib/right_agent/serialize/serializable.rb', line 83

def to_json(*a)
  {
    'json_class' => self.class.name,
    'data'       => serialized_members
  }.to_json(*a)
end

#to_msgpack(*a) ⇒ Object

Called by MessagePack serializer to serialise object’s members

Parameters

*a(Array)

Pass-through to Hash’s ‘to_msgpack’ method

Return

(String)

MessagePack representation



69
70
71
72
73
74
# File 'lib/right_agent/serialize/serializable.rb', line 69

def to_msgpack(*a)
  {
    'msgpack_class' => self.class.name,
    'data'          => serialized_members
  }.to_msgpack(*a)
end