Sha256: 310775bbae2c1fc9ae9efe7ea508a4cb681a3c6d05bb3ad5420310089bf063fd
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
module DRbQS class TaskGenerator def initialize(data = {}) data.each do |key, val| instance_variable_set("@#{key.to_s}", val) end @__fiber__ = nil @__iterate__ = nil @__fiber_init__ = nil end def have_next? !!@__fiber__ end def create_add_task(*args, &block) Fiber.yield(DRbQS::Task.new(*args, &block)) end def set(iterate = 1, &block) @__iterate__ = iterate @__fiber_init__ = lambda do @__fiber__ = Fiber.new do instance_eval(&block) nil end end end def init @__fiber_init__.call end # Return an array of new tasks. def new_tasks if @__fiber__ task_ary = [] @__iterate__.times do |i| if task_new = @__fiber__.resume case task_new when DRbQS::Task task_ary << task_new when Array task_ary.concat(task_new) else raise "Invalid type of new task." end else @__fiber__ = nil break end end if task_ary.size > 0 return task_ary end end nil end # Create all tasks for test and return true if all tasks created properly. def debug_all_tasks(limit = nil) i = 0 while ary = new_tasks ary.each? do |t| unless DRbQS::TaskGenerator === t raise "Invalid task by #{i}th generation: #{t.inspect}" end end i += 1 end true end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
drbqs-0.0.6 | lib/drbqs/task_generator.rb |