Sha256: 4d5245a98f1a58e10e60f38dfe92612d41d4d3befcd6163b0bf82348167ae8ed

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

module DRbQS
  class Task
    # The object of this class is mainly used in DRbQS::Task::Generator#set
    # and calls Fiber.yield.
    class Registrar
      # @param [Hash] data Set instance variables from the hash.
      def initialize(data)
        data.each do |key, val|
          instance_variable_set("@#{key.to_s}", val)
        end
      end

      # Add tasks to server.
      # @param [DRbQS::Task,Array] arg DRbQS::Task object or array of DRbQS::Task objects, which is added to pool of tasks
      def add(arg)
        case arg
        when DRbQS::Task
          Fiber.yield(arg)
        when Array
          arg.each { |t| Fiber.yield(t) }
        else
          raise ArgumentError, "An argument must be DRbQS::Task or an array of DRbQS::Task."
        end
      end

      # Create an object of DRbQS::Task and add it.
      # The arguments are same as {DRbQS::Task}.
      def create_add(*args, &block)
        add(DRbQS::Task.new(*args, &block))
      end

      # Wait finishes of all tasks in queue of a server.
      def wait
        Fiber.yield(:wait)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
drbqs-0.1.1 lib/drbqs/task/registrar.rb
drbqs-0.1.0 lib/drbqs/task/registrar.rb