module Thrift::Processor
Public Class Methods
new(handler, logger=nil)
click to toggle source
# File lib/thrift/processor.rb 24 def initialize(handler, logger=nil) 25 @handler = handler 26 if logger.nil? 27 @logger = Logger.new(STDERR) 28 @logger.level = Logger::WARN 29 else 30 @logger = logger 31 end 32 end
Public Instance Methods
process(iprot, oprot)
click to toggle source
# File lib/thrift/processor.rb 34 def process(iprot, oprot) 35 name, type, seqid = iprot.read_message_begin 36 if respond_to?("process_#{name}") 37 begin 38 send("process_#{name}", seqid, iprot, oprot) 39 rescue => e 40 x = ApplicationException.new(ApplicationException::INTERNAL_ERROR, 'Internal error') 41 @logger.debug "Internal error : #{e.message}\n#{e.backtrace.join("\n")}" 42 write_error(x, oprot, name, seqid) 43 end 44 true 45 else 46 iprot.skip(Types::STRUCT) 47 iprot.read_message_end 48 x = ApplicationException.new(ApplicationException::UNKNOWN_METHOD, 'Unknown function '+name) 49 write_error(x, oprot, name, seqid) 50 false 51 end 52 end
read_args(iprot, args_class)
click to toggle source
# File lib/thrift/processor.rb 54 def read_args(iprot, args_class) 55 args = args_class.new 56 args.read(iprot) 57 iprot.read_message_end 58 args 59 end
write_error(err, oprot, name, seqid)
click to toggle source
# File lib/thrift/processor.rb 68 def write_error(err, oprot, name, seqid) 69 oprot.write_message_begin(name, MessageTypes::EXCEPTION, seqid) 70 err.write(oprot) 71 oprot.write_message_end 72 oprot.trans.flush 73 end
write_result(result, oprot, name, seqid)
click to toggle source
# File lib/thrift/processor.rb 61 def write_result(result, oprot, name, seqid) 62 oprot.write_message_begin(name, MessageTypes::REPLY, seqid) 63 result.write(oprot) 64 oprot.write_message_end 65 oprot.trans.flush 66 end