class Synapse::Serialization::SerializationAwareEventMessage

Decorator for an event message that adds serialization awareness

Any serialization that occurs on the metadata or payload of this message will be cached so that if a message is serialized more than once, the serialization process will only occur once.

Public Class Methods

decorate(message) click to toggle source

@param [EventMessage] message @return [SerializationAwareEventMessage]

# File lib/synapse/serialization/message/serialization_aware_message.rb, line 14
def self.decorate(message)
  if message.is_a? SerializationAware
    return message
  end

  self.new message
end
new(message) click to toggle source

@param [EventMessage] message @return [undefined]

# File lib/synapse/serialization/message/serialization_aware_message.rb, line 24
def initialize(message)
  @message = message
  @cache = SerializedObjectCache.new message
end

Public Instance Methods

and_metadata(additional_metadata) click to toggle source

@see Message#and_metadata @param [Hash] additional_metadata @return [SerializationAwareEventMessage]

# File lib/synapse/serialization/message/serialization_aware_message.rb, line 32
def and_metadata(additional_metadata)
  new_message = @message.and_metadata additional_metadata
  if new_message.equal? @message
    return self
  end

  self.class.new new_message
end
with_metadata(replacement_metadata) click to toggle source

@see Message#with_metadata @param [Hash] replacement_metadata @return [SerializationAwareEventMessage]

# File lib/synapse/serialization/message/serialization_aware_message.rb, line 44
def with_metadata(replacement_metadata)
  new_message = @message.with_metadata replacement_metadata
  if new_message.equal? @message
    return self
  end

  self.class.new new_message
end