class GH::Parallel
Public: …
Attributes
parallelize[RW]
Public Instance Methods
connection()
click to toggle source
# File lib/gh/parallel.rb, line 51 def connection @connection ||= begin layer = backend layer = layer.backend until layer.respond_to? :connection layer.connection end end
generate_response(key, response)
click to toggle source
Calls superclass method
# File lib/gh/parallel.rb, line 26 def generate_response(key, response) return super unless in_parallel? dummy = Dummy.new @mutex.synchronize { @queue << [dummy, key, response] } dummy end
in_parallel() { || ... }
click to toggle source
# File lib/gh/parallel.rb, line 33 def in_parallel return yield if in_parallel? or not @parallelize was, @in_parallel = @in_parallel, true result = nil connection.in_parallel { result = yield } @mutex.synchronize do @queue.each { |dummy, key, response| dummy.__delegate__ = backend.generate_response(key, response) } @queue.clear end result ensure @in_parallel = was unless was.nil? end
in_parallel?()
click to toggle source
# File lib/gh/parallel.rb, line 47 def in_parallel? @in_parallel end
setup(*)
click to toggle source
Calls superclass method
# File lib/gh/parallel.rb, line 18 def setup(*) @parallelize = true if @parallelize.nil? @in_parallel = false @mutex = Mutex.new @queue = [] super end