class Parallizer
Constants
- DEFAULT_WORK_QUEUE_SIZE
- VERSION
Attributes
call_infos[R]
calls[R]
client[R]
options[R]
proxy[R]
Public Class Methods
in_parallizer_thread?()
click to toggle source
# File lib/parallizer.rb, line 34 def in_parallizer_thread? Thread.current[:parallizer_thread] == true end
new(client, options = {})
click to toggle source
# File lib/parallizer.rb, line 41 def initialize(client, options = {}) @client = client @options = {:retries => 0}.merge(options) @call_infos = {} end
work_queue()
click to toggle source
# File lib/parallizer.rb, line 23 def work_queue # TODO: share the work queue among calling threads?? queue = Thread.current[:parallizer_work_queue] if queue.nil? || Thread.current[:parallizer_work_queue_size] != work_queue_size queue = Thread.current[:parallizer_work_queue] = ::Parallizer::Worker.pool(:size => work_queue_size) Thread.current[:parallizer_work_queue_size] = work_queue_size end queue end
work_queue_size()
click to toggle source
# File lib/parallizer.rb, line 15 def work_queue_size @work_queue_size || DEFAULT_WORK_QUEUE_SIZE end
work_queue_size=(work_queue_size)
click to toggle source
# File lib/parallizer.rb, line 19 def work_queue_size=(work_queue_size) @work_queue_size = work_queue_size end
Public Instance Methods
add_call(method_name, *args)
click to toggle source
# File lib/parallizer.rb, line 51 def add_call(method_name, *args) add.send(method_name, *args) end
all_call_results()
click to toggle source
# File lib/parallizer.rb, line 63 def all_call_results proxy = create_proxy call_infos.keys.inject({}) do |result, method_name_and_args| result[method_name_and_args] = proxy.send(*method_name_and_args) result end end
create_proxy()
click to toggle source
# File lib/parallizer.rb, line 55 def create_proxy raise ArgumentError, "Cannot create another proxy" if @proxy execute ::Parallizer::Proxy.new(client, call_infos) end
Private Instance Methods
add_invoked(method_name_and_args)
click to toggle source
# File lib/parallizer.rb, line 75 def add_invoked(method_name_and_args) raise ArgumentError, "Cannot add calls after proxy has been generated" if @proxy return if call_infos[method_name_and_args] call_info = { :future => ::Parallizer::work_queue.future(:run, @client, method_name_and_args.first, method_name_and_args[1..-1], options), :result => nil, :exception => nil } call_infos[method_name_and_args] = call_info end
execute()
click to toggle source
# File lib/parallizer.rb, line 88 def execute call_infos.each do |method_name_and_args, call_info| call_info.merge!(call_info[:future].value) end end