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