Class: Rubcask::Server::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/rubcask/server/runner.rb,
lib/rubcask/server/runner/config.rb

Overview

ServerRunner runs a server alongside merge worker It supports graceful shutdown with Ctrl-c

Defined Under Namespace

Classes: Config

Instance Method Summary collapse

Constructor Details

#initialize(server_config: Rubcask::Server::Config.new, dir_config: Rubcask::Config::DEFAULT_SERVER_CONFIG, runner_config: Rubcask::Server::Runner::Config.new) ⇒ Runner

Returns a new instance of Runner.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rubcask/server/runner.rb', line 13

def initialize(
  server_config: Rubcask::Server::Config.new,
  dir_config: Rubcask::Config::DEFAULT_SERVER_CONFIG,
  runner_config: Rubcask::Server::Runner::Config.new
)
  @dir = Rubcask::Directory.new(
    runner_config.directory_path,
    config: dir_config
  )
  @server = new_server(runner_config.server_type, server_config)
  @merge_worker = if runner_config.merge_interval && runner_config.merge_interval > 0
    Concurrent::TimerTask.new(
      execution_interval: runner_config.merge_interval
    ) do
      merge_dir
    end
  end
end

Instance Method Details

#closeObject

Stops the server



41
42
43
44
# File 'lib/rubcask/server/runner.rb', line 41

def close
  close_server
  mutex_close
end

#startObject

Note:

It blocks the current thread

Starts the runner.



34
35
36
37
38
# File 'lib/rubcask/server/runner.rb', line 34

def start
  install_trap!
  @merge_worker.execute
  @server.start
end