Sha256: 87c05e39cf7d9f48710dafcc2fb525d3ccacb834d8bad19351dc9859eb3153b9

Contents?: true

Size: 1.84 KB

Versions: 26

Compression:

Stored size: 1.84 KB

Contents

module Steep
  module Drivers
    class Worker
      attr_reader :stdout, :stderr, :stdin

      attr_accessor :steepfile_path
      attr_accessor :worker_type
      attr_accessor :worker_name
      attr_accessor :delay_shutdown
      attr_accessor :max_index
      attr_accessor :index
      attr_accessor :commandline_args

      include Utils::DriverHelper

      def initialize(stdout:, stderr:, stdin:)
        @stdout = stdout
        @stderr = stderr
        @stdin = stdin
        @commandline_args = []
      end

      def run()
        Steep.logger.tagged("#{worker_type}:#{worker_name}") do
          project = load_config()

          reader = LanguageServer::Protocol::Transport::Io::Reader.new(stdin)
          writer = LanguageServer::Protocol::Transport::Io::Writer.new(stdout)

          worker = case worker_type
                   when :typecheck
                     assignment = Services::PathAssignment.new(max_index: max_index, index: index)
                     Server::TypeCheckWorker.new(project: project,
                                                 reader: reader,
                                                 writer: writer,
                                                 assignment: assignment,
                                                 commandline_args: commandline_args)
                   when :interaction
                     Server::InteractionWorker.new(project: project, reader: reader, writer: writer)
                   else
                     raise "Unknown worker type: #{worker_type}"
                   end

          unless delay_shutdown
            worker.skip_jobs_after_shutdown!
          end

          Steep.logger.info "Starting #{worker_type} worker..."

          worker.run()
        rescue Interrupt
          Steep.logger.info "Shutting down by interrupt..."
        end

        0
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
steep-1.2.1 lib/steep/drivers/worker.rb
steep-1.2.0 lib/steep/drivers/worker.rb
steep-1.2.0.pre.1 lib/steep/drivers/worker.rb
steep-1.1.1 lib/steep/drivers/worker.rb
steep-1.1.0 lib/steep/drivers/worker.rb
steep-1.1.0.pre.1 lib/steep/drivers/worker.rb
steep-1.0.2 lib/steep/drivers/worker.rb
steep-1.0.1 lib/steep/drivers/worker.rb
steep-1.0.0 lib/steep/drivers/worker.rb
steep-0.52.2 lib/steep/drivers/worker.rb
steep-0.52.1 lib/steep/drivers/worker.rb
steep-0.52.0 lib/steep/drivers/worker.rb
steep-0.51.0 lib/steep/drivers/worker.rb
steep-0.50.0 lib/steep/drivers/worker.rb
steep-0.49.1 lib/steep/drivers/worker.rb
steep-0.49.0 lib/steep/drivers/worker.rb
steep-0.48.0 lib/steep/drivers/worker.rb
steep-0.47.1 lib/steep/drivers/worker.rb
steep-0.47.0 lib/steep/drivers/worker.rb
steep-0.46.0 lib/steep/drivers/worker.rb