class Steep::Drivers::Worker

def initialize(stdout:, stderr:, stdin:)

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

def run()

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