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