Module: Thrift::Client
- Defined in:
- lib/thrift/client.rb
Constant Summary collapse
- MIN_SEQUENCE_ID =
-(2**31)
- MAX_SEQUENCE_ID =
(2**31) - 1
Instance Method Summary collapse
- #initialize(iprot, oprot = nil) ⇒ Object
- #receive_message(result_klass) ⇒ Object
- #receive_message_begin ⇒ Object
- #send_message(name, args_class, args = {}) ⇒ Object
- #send_message_args(args_class, args) ⇒ Object
- #send_oneway_message(name, args_class, args = {}) ⇒ Object
- #validate_message_begin(fname, mtype, rseqid, expected_name) ⇒ Object
Instance Method Details
#initialize(iprot, oprot = nil) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/thrift/client.rb', line 26 def initialize(iprot, oprot = nil) @iprot = iprot @oprot = oprot || iprot @seqid = 0 @pending_seqids = [] end |
#receive_message(result_klass) ⇒ Object
94 95 96 97 98 99 |
# File 'lib/thrift/client.rb', line 94 def (result_klass) result = result_klass.new result.read(@iprot) @iprot. result end |
#receive_message_begin ⇒ Object
60 61 62 63 |
# File 'lib/thrift/client.rb', line 60 def () fname, mtype, rseqid = @iprot. [fname, mtype, rseqid] end |
#send_message(name, args_class, args = {}) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/thrift/client.rb', line 33 def (name, args_class, args = {}) seqid = next_seqid! @oprot.(name, MessageTypes::CALL, seqid) (args_class, args) @pending_seqids << seqid end |
#send_message_args(args_class, args) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/thrift/client.rb', line 45 def (args_class, args) data = args_class.new args.each do |k, v| data.send("#{k.to_s}=", v) end begin data.write(@oprot) rescue StandardError => e @oprot.trans.close raise e end @oprot. @oprot.trans.flush end |
#send_oneway_message(name, args_class, args = {}) ⇒ Object
40 41 42 43 |
# File 'lib/thrift/client.rb', line 40 def (name, args_class, args = {}) @oprot.(name, MessageTypes::ONEWAY, next_seqid!) (args_class, args) end |
#validate_message_begin(fname, mtype, rseqid, expected_name) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/thrift/client.rb', line 65 def (fname, mtype, rseqid, expected_name) expected_seqid = dequeue_pending_seqid if mtype == MessageTypes::EXCEPTION raise_application_exception end if mtype != MessageTypes::REPLY raise ApplicationException.new( ApplicationException::INVALID_MESSAGE_TYPE, "#{expected_name} failed: invalid message type" ) end if fname != expected_name raise ApplicationException.new( ApplicationException::WRONG_METHOD_NAME, "#{expected_name} failed: wrong method name" ) end return if !expected_seqid.nil? && rseqid == expected_seqid raise ApplicationException.new( ApplicationException::BAD_SEQUENCE_ID, "#{expected_name} failed: out of sequence response" ) end |