Class: Vessel::Scheduler

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/vessel/scheduler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue, settings) ⇒ Scheduler

Returns a new instance of Scheduler.



14
15
16
17
18
# File 'lib/vessel/scheduler.rb', line 14

def initialize(queue, settings)
  @queue = queue
  @settings = settings
  @driver = Driver::Registry.instance.build(settings)
end

Instance Attribute Details

#driverObject (readonly)

Returns the value of attribute driver.



12
13
14
# File 'lib/vessel/scheduler.rb', line 12

def driver
  @driver
end

#queueObject (readonly)

Returns the value of attribute queue.



12
13
14
# File 'lib/vessel/scheduler.rb', line 12

def queue
  @queue
end

#settingsObject (readonly)

Returns the value of attribute settings.



12
13
14
# File 'lib/vessel/scheduler.rb', line 12

def settings
  @settings
end

Instance Method Details

#force_killObject



33
34
35
36
# File 'lib/vessel/scheduler.rb', line 33

def force_kill
  pool.send(:ns_kill_execution)
  driver.stop
end

#idle?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/vessel/scheduler.rb', line 38

def idle?
  queue_length.zero? && scheduled_task_count == completed_task_count
end

#post(*requests) ⇒ Object



20
21
22
23
24
25
# File 'lib/vessel/scheduler.rb', line 20

def post(*requests)
  requests.flatten.map do |request|
    Concurrent::Future.execute(executor: pool,
                               args: [request]) { |r| queue << driver.go_to(r) }
  end
end

#stopObject



27
28
29
30
31
# File 'lib/vessel/scheduler.rb', line 27

def stop
  pool.shutdown
  pool.kill unless pool.wait_for_termination(30)
  driver.stop
end