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