Method: OpenC3::MultiMicroservice#run

Defined in:
lib/openc3/microservices/multi_microservice.rb

#runObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/openc3/microservices/multi_microservice.rb', line 24

def run
  @threads = []
  ARGV.each do |microservice_name|
    microservice_model = MicroserviceModel.get_model(name: microservice_name, scope: @scope)
    @threads << Thread.new do
      cmd_line = microservice_model.cmd.join(' ')
      split_cmd_line = cmd_line.split(' ')
      filename = nil
      split_cmd_line.each do |item|
        if File.extname(item) == '.rb'
          filename = item
          break
        end
      end
      raise "Could not determine class filename from '#{cmd_line}'" unless filename
      OpenC3.set_working_dir(@work_dir) do
        require_relative filename
      end
      klass = filename.filename_to_class_name.to_class
      klass.run(microservice_model.name)
    end
  end
  @threads.each do |thread|
    thread.join
  end
end