class Lowkiq::Server
Public Class Methods
build(options)
click to toggle source
# File lib/lowkiq/server.rb, line 3 def self.build(options) require options[:require] Lowkiq.on_server_init.call splitter = Lowkiq.build_splitter.call shard_handlers_by_thread = splitter.call Lowkiq.shard_handlers scheduler = Lowkiq.build_scheduler.call new shard_handlers_by_thread, scheduler end
new(shard_handlers_by_thread, scheduler)
click to toggle source
# File lib/lowkiq/server.rb, line 13 def initialize(shard_handlers_by_thread, scheduler) @shard_handlers_by_thread = shard_handlers_by_thread @scheduler = scheduler @threads = [] end
Public Instance Methods
exit_from_thread?()
click to toggle source
# File lib/lowkiq/server.rb, line 44 def exit_from_thread? stopped? || failed? end
failed?()
click to toggle source
# File lib/lowkiq/server.rb, line 52 def failed? @threads.map(&:status).any? do |status| status != "run" && status != "sleep" end end
join()
click to toggle source
# File lib/lowkiq/server.rb, line 40 def join @threads.each(&:join) end
start()
click to toggle source
# File lib/lowkiq/server.rb, line 19 def start Lowkiq.server_redis_pool.with do |redis| Script.load! redis end @shard_handlers_by_thread.each do |handlers| handlers.each(&:restore) end @threads = @shard_handlers_by_thread.map do |handlers| job = @scheduler.build_job handlers Thread.new do job.call until exit_from_thread? end end end
stop()
click to toggle source
# File lib/lowkiq/server.rb, line 36 def stop @stopped = true end
stopped?()
click to toggle source
# File lib/lowkiq/server.rb, line 48 def stopped? @stopped end