def initialize(scheduler, original, opts, block)
@scheduler = scheduler
@original = original
@opts = opts
@handler = block
@callable =
if block.respond_to?(:arity)
block
elsif block.respond_to?(:call)
block.method(:call)
elsif block.is_a?(Class)
@handler = block.new
@handler.method(:call) rescue nil
else
nil
end
@scheduled_at = Rufus::Scheduler::ZoTime.now
@unscheduled_at = nil
@last_time = nil
@locals = {}
@local_mutex = Mutex.new
@id = determine_id
fail(
ArgumentError,
'missing block or callable to schedule',
caller[2..-1]
) unless @callable
@tags = Array(opts[:tag] || opts[:tags]).collect { |t| t.to_s }
@count = 0
@last_work_time = 0.0
@mean_work_time = 0.0
if @opts[:allow_overlap] == false || @opts[:allow_overlapping] == false
@opts[:overlap] = false
end
if m = @opts[:mutex]
@opts[:mutex] = Array(m)
end
end