Class: Protobuf::Rpc::Stat
- Inherits:
-
Object
- Object
- Protobuf::Rpc::Stat
- Defined in:
- lib/protobuf/rpc/stat.rb
Constant Summary collapse
- MODES =
[:SERVER, :CLIENT].freeze
Instance Attribute Summary collapse
-
#client ⇒ Object
Returns the value of attribute client.
-
#dispatcher ⇒ Object
Returns the value of attribute dispatcher.
-
#end_time ⇒ Object
Returns the value of attribute end_time.
-
#method_name ⇒ Object
Returns the value of attribute method_name.
-
#mode ⇒ Object
Returns the value of attribute mode.
-
#request_size ⇒ Object
Returns the value of attribute request_size.
-
#response_size ⇒ Object
Returns the value of attribute response_size.
-
#server ⇒ Object
Returns the value of attribute server.
-
#service ⇒ Object
Returns the value of attribute service.
-
#start_time ⇒ Object
Returns the value of attribute start_time.
Instance Method Summary collapse
- #client? ⇒ Boolean
- #elapsed_time ⇒ Object
- #failure(code) ⇒ Object
-
#initialize(mode = :SERVER) ⇒ Stat
constructor
A new instance of Stat.
- #rpc ⇒ Object
- #server? ⇒ Boolean
- #sizes ⇒ Object
- #start ⇒ Object
-
#statsd_base_path ⇒ Object
Return base path for StatsD metrics.
- #stop ⇒ Object
- #stopped? ⇒ Boolean
- #success ⇒ Object
- #to_s ⇒ Object
- #trace_id ⇒ Object
Constructor Details
#initialize(mode = :SERVER) ⇒ Stat
Returns a new instance of Stat.
14 15 16 17 18 19 20 21 |
# File 'lib/protobuf/rpc/stat.rb', line 14 def initialize(mode = :SERVER) @mode = mode @request_size = 0 @response_size = 0 @success = false @failure_code = nil start end |
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
10 11 12 |
# File 'lib/protobuf/rpc/stat.rb', line 10 def client @client end |
#dispatcher ⇒ Object
Returns the value of attribute dispatcher.
9 10 11 |
# File 'lib/protobuf/rpc/stat.rb', line 9 def dispatcher @dispatcher end |
#end_time ⇒ Object
Returns the value of attribute end_time.
9 10 11 |
# File 'lib/protobuf/rpc/stat.rb', line 9 def end_time @end_time end |
#method_name ⇒ Object
Returns the value of attribute method_name.
10 11 12 |
# File 'lib/protobuf/rpc/stat.rb', line 10 def method_name @method_name end |
#mode ⇒ Object
Returns the value of attribute mode.
9 10 11 |
# File 'lib/protobuf/rpc/stat.rb', line 9 def mode @mode end |
#request_size ⇒ Object
Returns the value of attribute request_size.
9 10 11 |
# File 'lib/protobuf/rpc/stat.rb', line 9 def request_size @request_size end |
#response_size ⇒ Object
Returns the value of attribute response_size.
10 11 12 |
# File 'lib/protobuf/rpc/stat.rb', line 10 def response_size @response_size end |
#server ⇒ Object
Returns the value of attribute server.
10 11 12 |
# File 'lib/protobuf/rpc/stat.rb', line 10 def server @server end |
#service ⇒ Object
Returns the value of attribute service.
10 11 12 |
# File 'lib/protobuf/rpc/stat.rb', line 10 def service @service end |
#start_time ⇒ Object
Returns the value of attribute start_time.
9 10 11 |
# File 'lib/protobuf/rpc/stat.rb', line 9 def start_time @start_time end |
Instance Method Details
#client? ⇒ Boolean
89 90 91 |
# File 'lib/protobuf/rpc/stat.rb', line 89 def client? @mode == :CLIENT end |
#elapsed_time ⇒ Object
31 32 33 |
# File 'lib/protobuf/rpc/stat.rb', line 31 def elapsed_time (start_time && end_time ? "#{(end_time - start_time).round(4)}s" : nil) end |
#failure(code) ⇒ Object
73 74 75 |
# File 'lib/protobuf/rpc/stat.rb', line 73 def failure(code) @failure_code = code end |
#rpc ⇒ Object
81 82 83 |
# File 'lib/protobuf/rpc/stat.rb', line 81 def rpc service && method_name ? "#{service}##{method_name}" : nil end |
#server? ⇒ Boolean
85 86 87 |
# File 'lib/protobuf/rpc/stat.rb', line 85 def server? @mode == :SERVER end |
#sizes ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/protobuf/rpc/stat.rb', line 51 def sizes if stopped? "#{@request_size}B/#{@response_size}B" else "#{@request_size}B/-" end end |
#start ⇒ Object
59 60 61 |
# File 'lib/protobuf/rpc/stat.rb', line 59 def start @start_time ||= ::Time.now end |
#statsd_base_path ⇒ Object
Return base path for StatsD metrics
110 111 112 |
# File 'lib/protobuf/rpc/stat.rb', line 110 def statsd_base_path "rpc-client.#{service}.#{method_name}".gsub('::', '.').downcase end |
#stop ⇒ Object
63 64 65 66 67 |
# File 'lib/protobuf/rpc/stat.rb', line 63 def stop start unless @start_time @end_time ||= ::Time.now call_statsd_client end |
#stopped? ⇒ Boolean
77 78 79 |
# File 'lib/protobuf/rpc/stat.rb', line 77 def stopped? ! end_time.nil? end |
#success ⇒ Object
69 70 71 |
# File 'lib/protobuf/rpc/stat.rb', line 69 def success @success = true end |
#to_s ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/protobuf/rpc/stat.rb', line 93 def to_s [ server? ? "[SRV]" : "[CLT]", server? ? client : server, trace_id, rpc, sizes, elapsed_time, @end_time.try(:iso8601) ].compact.join(' - ') end |
#trace_id ⇒ Object
105 106 107 |
# File 'lib/protobuf/rpc/stat.rb', line 105 def trace_id ::Thread.current.object_id.to_s(16) end |