Module: Concurrent::Dereferenceable
- Included in:
- Agent, Obligation, TimerTask
- Defined in:
- lib/concurrent/dereferenceable.rb
Instance Method Summary collapse
- #set_deref_options(opts = {}) ⇒ Object
- #value ⇒ Object (also: #deref)
Instance Method Details
#set_deref_options(opts = {}) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/concurrent/dereferenceable.rb', line 5 def (opts = {}) mutex.synchronize do @dup_on_deref = opts[:dup_on_deref] || opts[:dup] || false @freeze_on_deref = opts[:freeze_on_deref] || opts[:freeze] || false @copy_on_deref = opts[:copy_on_deref] || opts[:copy] @do_nothing_on_deref = ! (@dup_on_deref || @freeze_on_deref || @copy_on_deref) end end |
#value ⇒ Object Also known as: deref
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/concurrent/dereferenceable.rb', line 14 def value return nil if @value.nil? return @value if @do_nothing_on_deref return mutex.synchronize do value = @value value = @copy_on_deref.call(value) if @copy_on_deref value = value.dup if @dup_on_deref value = value.freeze if @freeze_on_deref value end end |