class Synapse::Serialization::SerializedObjectCache
Thread-safe cache for messages to store serialized metadata and payload @api private
Public Class Methods
new(message)
click to toggle source
@param [Message] message @return [undefined]
# File lib/synapse/serialization/message/serialized_object_cache.rb, line 8 def initialize(message) @message = message @lock = Mutex.new @metadata_cache = Hash.new @payload_cache = Hash.new end
Public Instance Methods
serialize_metadata(serializer, expected_type)
click to toggle source
@param [Serializer] serializer @param [Class] expected_type @return [SerializedObject]
# File lib/synapse/serialization/message/serialized_object_cache.rb, line 18 def serialize_metadata(serializer, expected_type) serialize @message.metadata, @metadata_cache, serializer, expected_type end
serialize_payload(serializer, expected_type)
click to toggle source
@param [Serializer] serializer @param [Class] expected_type @return [SerializedObject]
# File lib/synapse/serialization/message/serialized_object_cache.rb, line 25 def serialize_payload(serializer, expected_type) serialize @message.payload, @payload_cache, serializer, expected_type end
Private Instance Methods
serialize(object, cache, serializer, expected_type)
click to toggle source
@param [Object] object @param [Hash<Serializer, SerializedObject>] cache @param [Serializer] serializer @param [Class] expected_type @return [SerializedObject]
# File lib/synapse/serialization/message/serialized_object_cache.rb, line 36 def serialize(object, cache, serializer, expected_type) @lock.synchronize do serialized = cache[serializer] if serialized serializer.converter_factory.convert serialized, expected_type else serialized = serializer.serialize object, expected_type cache[serializer] = serialized serialized end end end