Class: Gruf::Interceptors::Registry
- Inherits:
-
Object
- Object
- Gruf::Interceptors::Registry
- Defined in:
- lib/gruf/interceptors/registry.rb
Overview
Handles registration of interceptors
Defined Under Namespace
Classes: InterceptorNotFoundError
Instance Method Summary collapse
-
#clear ⇒ Object
Clear the registry.
-
#count ⇒ Integer
The number of interceptors currently loaded.
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
-
#insert_after(after_class, interceptor_class, options = {}) ⇒ Object
Insert an interceptor after another specified interceptor.
-
#insert_before(before_class, interceptor_class, options = {}) ⇒ Object
Insert an interceptor before another specified interceptor.
-
#prepare(request, error) ⇒ Array<Gruf::Interceptors::Base>
Load and return all interceptors for the given request.
-
#use(interceptor_class, options = {}) ⇒ Object
Add an interceptor to the registry.
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
24 25 26 |
# File 'lib/gruf/interceptors/registry.rb', line 24 def initialize @registry ||= [] end |
Instance Method Details
#clear ⇒ Object
Clear the registry
101 102 103 104 105 |
# File 'lib/gruf/interceptors/registry.rb', line 101 def clear interceptors_mutex do @registry = [] end end |
#count ⇒ Integer
Returns The number of interceptors currently loaded.
110 111 112 113 114 115 |
# File 'lib/gruf/interceptors/registry.rb', line 110 def count interceptors_mutex do @registry ||= [] @registry.count end end |
#insert_after(after_class, interceptor_class, options = {}) ⇒ Object
Insert an interceptor after another specified interceptor
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/gruf/interceptors/registry.rb', line 69 def insert_after(after_class, interceptor_class, = {}) interceptors_mutex do pos = @registry.find_index { |opts| opts.fetch(:klass, '') == after_class } raise InterceptorNotFoundError if pos.nil? @registry.insert( (pos + 1), klass: interceptor_class, options: ) end end |
#insert_before(before_class, interceptor_class, options = {}) ⇒ Object
Insert an interceptor before another specified interceptor
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/gruf/interceptors/registry.rb', line 50 def insert_before(before_class, interceptor_class, = {}) interceptors_mutex do pos = @registry.find_index { |opts| opts.fetch(:klass, '') == before_class } raise InterceptorNotFoundError if pos.nil? @registry.insert( pos, klass: interceptor_class, options: ) end end |
#prepare(request, error) ⇒ Array<Gruf::Interceptors::Base>
Load and return all interceptors for the given request
88 89 90 91 92 93 94 95 96 |
# File 'lib/gruf/interceptors/registry.rb', line 88 def prepare(request, error) is = [] interceptors_mutex do @registry.each do |o| is << o[:klass].new(request, error, o[:options]) end end is end |
#use(interceptor_class, options = {}) ⇒ Object
Add an interceptor to the registry
34 35 36 37 38 39 40 41 |
# File 'lib/gruf/interceptors/registry.rb', line 34 def use(interceptor_class, = {}) interceptors_mutex do @registry << { klass: interceptor_class, options: } end end |