Class: ScriptCore::MessageProcessor
- Defined in:
- lib/script_core/message_processor.rb
Instance Method Summary collapse
-
#initialize ⇒ MessageProcessor
constructor
A new instance of MessageProcessor.
- #process_all(channel) ⇒ Object
- #signal_abnormal_exit(code) ⇒ Object
- #signal_error(error) ⇒ Object
- #signal_signaled(signal) ⇒ Object
- #signal_truncation ⇒ Object
- #to_result ⇒ Object
Constructor Details
#initialize ⇒ MessageProcessor
5 6 7 8 9 10 11 |
# File 'lib/script_core/message_processor.rb', line 5 def initialize @measurements = {} @stat = ScriptCore::Stat::Null @errors = [] @output = nil @stdout = "" end |
Instance Method Details
#process_all(channel) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/script_core/message_processor.rb', line 13 def process_all(channel) unpacker = ScriptCore::Protocol.packer_factory.unpacker(channel) begin unpacker.each do || read() end rescue EOFError signal_truncation end end |
#signal_abnormal_exit(code) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/script_core/message_processor.rb', line 43 def signal_abnormal_exit(code) error = case code when 8 ScriptCore::ArithmeticOverflowError.new when 9 ScriptCore::UnknownTypeError.new when 16 ScriptCore::EngineMemoryQuotaError.new when 17 ScriptCore::EngineInstructionQuotaError.new when 19 ScriptCore::EngineTypeError.new else ScriptCore::EngineAbnormalExitError.new(code: code) end signal_error(error) end |
#signal_error(error) ⇒ Object
24 25 26 |
# File 'lib/script_core/message_processor.rb', line 24 def signal_error(error) @errors << error end |
#signal_signaled(signal) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/script_core/message_processor.rb', line 32 def signal_signaled(signal) error = case signal when 31 ScriptCore::EngineIllegalSyscallError.new else ScriptCore::EngineSignaledError.new(signal: signal) end signal_error(error) end |
#signal_truncation ⇒ Object
28 29 30 |
# File 'lib/script_core/message_processor.rb', line 28 def signal_truncation signal_error(ScriptCore::EngineTruncationError.new) end |
#to_result ⇒ Object
62 63 64 65 66 67 68 69 70 |
# File 'lib/script_core/message_processor.rb', line 62 def to_result ScriptCore::Result.new( output: @output, stdout: @stdout, stat: @stat, errors: @errors, measurements: @measurements ) end |