Module: FinagleThrift::Client

Includes:
Thrift::Client
Defined in:
lib/finagle-thrift/client.rb

Constant Summary collapse

CanTraceMethodName =
"__can__finagle__trace__v3__"

Instance Method Summary collapse

Instance Method Details

#_orig_receive_messageObject



8
# File 'lib/finagle-thrift/client.rb', line 8

alias_method :_orig_receive_message, :receive_message

#_orig_send_messageObject



7
# File 'lib/finagle-thrift/client.rb', line 7

alias_method :_orig_send_message, :send_message

#initialize(iprot, oprot = nil) ⇒ Object



10
11
12
13
14
15
# File 'lib/finagle-thrift/client.rb', line 10

def initialize(iprot, oprot=nil)
  super
  @upgraded = false
  @client_port = 0
  attempt_upgrade!
end

#receive_message(klass) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/finagle-thrift/client.rb', line 35

def receive_message(klass)
  if @upgraded
    response = ::FinagleThrift::ResponseHeader.new
    response.read(@iprot)
  end
  result = _orig_receive_message(klass)
  Trace.record(Trace::Annotation.new(Trace::Annotation::CLIENT_RECV, self.endpoint))
  result
end

#send_message(name, args_class, args = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/finagle-thrift/client.rb', line 17

def send_message(name, args_class, args = {})
  if @upgraded
    header = ::FinagleThrift::RequestHeader.new
    header.trace_id = Trace.id.trace_id.to_i
    header.parent_span_id = Trace.id.parent_id.to_i
    header.span_id = Trace.id.span_id.to_i
    header.sampled = Trace.id.sampled?
    header.flags = Trace.id.flags.to_i

    header.client_id = client_id if client_id

    header.write(@oprot)
  end
  Trace.record(Trace::Annotation.new(Trace::Annotation::CLIENT_SEND, self.endpoint))

  _orig_send_message(name, args_class, args)
end