Sha256: 98f75345753acbe56112aaa6000b4e5d130de0752cea25ae4e1aca046706f8b0

Contents?: true

Size: 1.02 KB

Versions: 18

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require "timeout"

module ScriptCore
  class Runner
    attr_reader(:timeout, :service_process, :message_processor_factory)

    def initialize(timeout:, service_process:, message_processor_factory:)
      @timeout = timeout
      @service_process = service_process
      @message_processor_factory = message_processor_factory
    end

    def run(*data)
      message_processor = message_processor_factory.new

      begin
        code = service_process.open do |channel|
          Timeout.timeout(timeout) do
            data.each { |datum| channel.write(datum) }
            message_processor.process_all(channel)
          end
        end

        if code > 255
          message_processor.signal_signaled(code - 255)
        elsif code != 0
          message_processor.signal_abnormal_exit(code)
        end
      rescue Timeout::Error
        message_processor.signal_error(
          ScriptCore::EngineTimeQuotaError.new(quota: timeout)
        )
      end

      message_processor.to_result
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
script_core-0.3.2 lib/script_core/runner.rb
script_core-0.3.0 lib/script_core/runner.rb
script_core-0.2.7 lib/script_core/runner.rb
script_core-0.2.6 lib/script_core/runner.rb
script_core-0.2.5 lib/script_core/runner.rb
script_core-0.2.4 lib/script_core/runner.rb
script_core-0.2.3 lib/script_core/runner.rb
script_core-0.2.2 lib/script_core/runner.rb
script_core-0.2.1 lib/script_core/runner.rb
script_core-0.2.0 lib/script_core/runner.rb
script_core-0.1.1 lib/script_core/runner.rb
script_core-0.1.0 lib/script_core/runner.rb
script_core-0.0.6 lib/script_core/runner.rb
script_core-0.0.5 lib/script_core/runner.rb
script_core-0.0.4 lib/script_core/runner.rb
script_core-0.0.3 lib/script_core/runner.rb
script_core-0.0.2 lib/script_core/runner.rb
script_core-0.0.1 lib/script_core/runner.rb