Class: GraphQL::Tracing::DetailedTrace::MemoryBackend
- Inherits:
-
Object
- Object
- GraphQL::Tracing::DetailedTrace::MemoryBackend
- Defined in:
- lib/graphql/tracing/detailed_trace/memory_backend.rb
Overview
An in-memory trace storage backend. Suitable for testing and development only. It won’t work for multi-process deployments and everything is erased when the app is restarted.
Instance Method Summary collapse
-
#delete_all_traces ⇒ Object
-
#delete_trace(id) ⇒ Object
-
#find_trace(id) ⇒ Object
-
#initialize(limit: nil) ⇒ MemoryBackend
constructor
A new instance of MemoryBackend.
-
#save_trace(operation_name, duration, begin_ms, trace_data) ⇒ Object
-
#traces(last:, before:) ⇒ Object
Constructor Details
#initialize(limit: nil) ⇒ MemoryBackend
Returns a new instance of MemoryBackend.
9 10 11 12 13 |
# File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 9 def initialize(limit: nil) @limit = limit @traces = {} @next_id = 0 end |
Instance Method Details
#delete_all_traces ⇒ Object
36 37 38 39 |
# File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 36 def delete_all_traces @traces.clear nil end |
#delete_trace(id) ⇒ Object
31 32 33 34 |
# File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 31 def delete_trace(id) @traces.delete(id.to_i) nil end |
#find_trace(id) ⇒ Object
27 28 29 |
# File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 27 def find_trace(id) @traces[id] end |
#save_trace(operation_name, duration, begin_ms, trace_data) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 41 def save_trace(operation_name, duration, begin_ms, trace_data) id = @next_id @next_id += 1 @traces[id] = DetailedTrace::StoredTrace.new( id: id, operation_name: operation_name, duration_ms: duration, begin_ms: begin_ms, trace_data: trace_data ) if @limit && @traces.size > @limit del_keys = @traces.keys[0...-@limit] del_keys.each { |k| @traces.delete(k) } end id end |
#traces(last:, before:) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/graphql/tracing/detailed_trace/memory_backend.rb', line 15 def traces(last:, before:) page = [] @traces.values.reverse_each do |trace| if page.size == last break elsif before.nil? || trace.begin_ms < before page << trace end end page end |