Class: Legion::Service

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/service.rb

Instance Method Summary collapse

Constructor Details

#initialize(transport: true, cache: true, data: true, supervision: true, extensions: true, crypt: true, log_level: 'info') ⇒ Service

rubocop:disable Metrics/ParameterLists



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/legion/service.rb', line 7

def initialize(transport: true, cache: true, data: true, supervision: true, extensions: true, crypt: true, log_level: 'info') # rubocop:disable Metrics/ParameterLists
  setup_logging(log_level: log_level)
  Legion::Logging.debug('Starting Legion::Service')
  setup_settings
  Legion::Logging.info("node name: #{Legion::Settings[:client][:name]}")

  if crypt
    require 'legion/crypt'
    Legion::Crypt.start
  end

  setup_transport if transport

  require 'legion/cache' if cache

  setup_data if data

  setup_supervision if supervision
  require 'legion/runner'
  load_extensions if extensions

  Legion::Crypt.cs if crypt
  Legion::Settings[:client][:ready] = true
end

Instance Method Details

#load_extensionsObject



73
74
75
76
# File 'lib/legion/service.rb', line 73

def load_extensions
  require 'legion/runner'
  Legion::Extensions.hook_extensions
end

#modulesObject



3
4
5
# File 'lib/legion/service.rb', line 3

def modules
  [Legion::Crypt, Legion::Transport, Legion::Cache, Legion::Data, Legion::Supervision].freeze
end

#setup_dataObject



32
33
34
35
36
# File 'lib/legion/service.rb', line 32

def setup_data
  require 'legion/data'
  Legion::Settings.merge_settings(:data, Legion::Data::Settings.default)
  Legion::Data.setup
end

#setup_logging(log_level: 'info', **_opts) ⇒ Object



45
46
47
48
# File 'lib/legion/service.rb', line 45

def setup_logging(log_level: 'info', **_opts)
  require 'legion/logging'
  Legion::Logging.setup(log_level: log_level, level: log_level, trace: true)
end

#setup_settingsObject



38
39
40
41
42
43
# File 'lib/legion/service.rb', line 38

def setup_settings
  require 'legion/settings'
  Legion::Logging.debug('Loading Legion::Settings')
  Legion::Settings.load(config_dir: './settings')
  Legion::Logging.info('Legion::Settings Loaded')
end

#setup_supervisionObject



56
57
58
59
# File 'lib/legion/service.rb', line 56

def setup_supervision
  require 'legion/supervision'
  @supervision = Legion::Supervision.setup
end

#setup_transportObject



50
51
52
53
54
# File 'lib/legion/service.rb', line 50

def setup_transport
  require 'legion/transport'
  Legion::Settings.merge_settings('transport', Legion::Transport::Settings.default)
  Legion::Transport::Connection.setup
end

#shutdownObject



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/legion/service.rb', line 61

def shutdown
  Legion::Logging.info('Legion::Service.shutdown was called')
  @shutdown = true
  Legion::Settings[:client][:shutting_down] = true
  sleep(1)
  Legion::Extensions.shutdown
  Legion::Data.shutdown
  Legion::Cache.shutdown
  Legion::Transport::Connection.shutdown
  Legion::Crypt.shutdown
end