module Thrift::Client
Public Class Methods
new(iprot, oprot = nil)
click to toggle source
# File lib/thrift/client.rb 23 def initialize(iprot, oprot = nil) 24 @iprot = iprot 25 @oprot = oprot || iprot 26 @seqid = 0 27 end
Public Instance Methods
handle_exception(mtype)
click to toggle source
# File lib/thrift/client.rb 87 def handle_exception(mtype) 88 return if mtype != MessageTypes::EXCEPTION 89 90 x = ApplicationException.new 91 x.read(@iprot) 92 @iprot.read_message_end 93 raise x 94 end
receive_message(result_klass, name=nil)
click to toggle source
# File lib/thrift/client.rb 62 def receive_message(result_klass, name=nil) 63 fname, mtype, seqid = @iprot.read_message_begin 64 handle_exception(mtype) 65 66 raise ApplicationException.new( 67 ApplicationException::BAD_SEQUENCE_ID, 68 'out of seq' 69 ) if seqid != @seqid 70 71 raise ApplicationException.new( 72 ApplicationException::INVALID_MESSAGE_TYPE, 73 'invalid message type' 74 ) if mtype != MessageTypes::REPLY 75 76 raise ApplicationException.new( 77 ApplicationException::WRONG_METHOD_NAME, 78 'wrong method name' 79 ) if !name.nil? && name != fname 80 81 result = result_klass.new 82 result.read(@iprot) 83 @iprot.read_message_end 84 result 85 end
send_message(name, args_class, args = {})
click to toggle source
# File lib/thrift/client.rb 29 def send_message(name, args_class, args = {}) 30 @seqid += 1 31 @oprot.write_message_begin(name, MessageTypes::CALL, @seqid) 32 send_message_args(args_class, args) 33 end
send_message_args(args_class, args)
click to toggle source
# File lib/thrift/client.rb 41 def send_message_args(args_class, args) 42 data = args_class.new 43 44 args.each do |k, v| 45 data.send("#{k.to_s}=", v) 46 end 47 48 send_message_instance(data) 49 end
send_message_instance(data)
click to toggle source
# File lib/thrift/client.rb 51 def send_message_instance(data) 52 begin 53 data.write(@oprot) 54 rescue StandardError => e 55 @oprot.trans.close 56 raise e 57 end 58 @oprot.write_message_end 59 @oprot.trans.flush 60 end
send_oneway_message(name, args_class, args = {})
click to toggle source
# File lib/thrift/client.rb 35 def send_oneway_message(name, args_class, args = {}) 36 @seqid += 1 37 @oprot.write_message_begin(name, MessageTypes::ONEWAY, @seqid) 38 send_message_args(args_class, args) 39 end