class Stark::Rack::LoggingProcessor
Public Class Methods
new(handler, secondary=nil)
click to toggle source
# File lib/stark/rack/logging_processor.rb, line 12 def initialize(handler, secondary=nil) @handler = handler @secondary = secondary end
Public Instance Methods
process(iprot, oprot)
click to toggle source
# File lib/stark/rack/logging_processor.rb, line 17 def process(iprot, oprot) name, type, seqid = iprot.read_message_begin x = nil if @handler.respond_to?("process_#{name}") begin @handler.send("process_#{name}", seqid, iprot, oprot) rescue StandardError => e Stark.logger.error "#{@handler.class.name}#process_#{name}: #{e.message}\n " + e.backtrace.join("\n ") x = Thrift::ApplicationException.new( Thrift::ApplicationException::UNKNOWN, "#{e.message} (#{e.class})") x.cause = e oprot.write_message_begin(name, Thrift::MessageTypes::EXCEPTION, seqid) x.write(oprot) oprot.write_message_end oprot.trans.flush end if s = @secondary if x s.error name, type, seqid, x else s.success name, type, seqid end end [name, type, seqid, x] else iprot.skip(Thrift::Types::STRUCT) iprot.read_message_end x = Thrift::ApplicationException.new(Thrift::ApplicationException::UNKNOWN_METHOD, "Unknown function: #{name}") oprot.write_message_begin(name, Thrift::MessageTypes::EXCEPTION, seqid) x.write(oprot) oprot.write_message_end oprot.trans.flush if s = @secondary s.error name, type, seqid, x end false end end