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.



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

def initialize(queue, settings)
  @queue = queue
  @min_threads, @max_threads, @delay =
    settings.values_at(:min_threads, :max_threads, :delay)

  options = {}
  options.merge!(timeout: settings[:timeout]) if settings[:timeout]
  @browser = Ferrum::Browser.new(**options)
end

Instance Attribute Details

#browserObject (readonly)

Returns the value of attribute browser.



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

def browser
  @browser
end

#delayObject (readonly)

Returns the value of attribute delay.



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

def delay
  @delay
end

#queueObject (readonly)

Returns the value of attribute queue.



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

def queue
  @queue
end

Instance Method Details

#post(*requests) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/vessel/scheduler.rb', line 23

def post(*requests)
  requests.map do |request|
    Concurrent::Promises.future_on(pool, queue, request) do |queue, request|
      queue << goto(request)
    end
  end
end