Module: Julewire::Core::Serialization::SerializerPool
- Defined in:
- lib/julewire/core/serialization/serializer_pool.rb
Class Method Summary collapse
- .serialize(pool_key, serializer_key, payload) ⇒ Object
- .serialize_with(serializer, payload) ⇒ Object
- .serializer(pool_key, serializer_key) ⇒ Object
Class Method Details
.serialize(pool_key, serializer_key, payload) ⇒ Object
18 19 20 |
# File 'lib/julewire/core/serialization/serializer_pool.rb', line 18 def serialize(pool_key, serializer_key, payload, &) serialize_with(serializer(pool_key, serializer_key, &), payload, &) end |
.serialize_with(serializer, payload) ⇒ Object
22 23 24 25 |
# File 'lib/julewire/core/serialization/serializer_pool.rb', line 22 def serialize_with(serializer, payload) serializer = yield if serializer.in_use? serializer.serialize(payload) end |
.serializer(pool_key, serializer_key) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/julewire/core/serialization/serializer_pool.rb', line 8 def serializer(pool_key, serializer_key) # Serializers carry traversal state, so pooled instances stay thread-local. pool = Thread.current.thread_variable_get(pool_key) unless pool pool = {} Thread.current.thread_variable_set(pool_key, pool) end pool[serializer_key] ||= yield end |