Class Needle::Lifecycle::Threaded
In: lib/needle/lifecycle/threaded.rb
Parent: Needle::Pipeline::Element

The instantiation pipeline element that enforces the singleton multiplicity, on a per-thread basis.

Methods

call   reset!   service_cache  

Public Instance methods

Returns the cached reference, if it has been previously cached for the current thread. Otherwise, invokes the next element in the pipeline and caches the result. The cached reference is returned.

[Source]

    # File lib/needle/lifecycle/threaded.rb, line 36
36:       def call( container, point )
37:         cache = service_cache
38:         name = service_point.fullname
39: 
40:         unless cache.has_key?( name )
41:           service = succ.call( container, point )
42:           cache[ name ] = service
43:         end
44: 
45:         cache[ name ]
46:       end

Resets the cached singleton instance, so that the next time it is requested it is re-constructed. Only the cache for the current thread and service point is reset.

[Source]

    # File lib/needle/lifecycle/threaded.rb, line 51
51:       def reset!
52:         cache = service_cache
53:         cache.delete service_point.fullname
54:       end

Returns a Hash of threaded services that are cached by the current thread.

[Source]

    # File lib/needle/lifecycle/threaded.rb, line 29
29:       def service_cache
30:         Thread.current[ :threaded_services ] ||= Hash.new
31:       end

[Validate]