module Protobuf::Rpc::ServiceFilters::ClassMethods

Public Instance Methods

filters() click to toggle source

Filters hash keyed based on filter type (e.g. :before, :after, :around), whose values are Sets.

# File lib/protobuf/rpc/service_filters.rb, line 26
def filters
  @filters ||= Hash.new { |h, k| h[k] = [] }
end
rescue_filters() click to toggle source

Filters hash keyed based on filter type (e.g. :before, :after, :around), whose values are Sets.

# File lib/protobuf/rpc/service_filters.rb, line 33
def rescue_filters
  @rescue_filters ||= {}
end
rescue_from(*ex_klasses, &block) click to toggle source
# File lib/protobuf/rpc/service_filters.rb, line 37
def rescue_from(*ex_klasses, &block)
  options = ex_klasses.last.is_a?(Hash) ? ex_klasses.pop : {}
  callable = options.delete(:with) { block }
  fail ArgumentError, 'Option :with missing from rescue_from options' if callable.nil?
  ex_klasses.each { |ex_klass| rescue_filters[ex_klass] = callable }
end

Private Instance Methods

define_filter(type, filter, options = {}) click to toggle source
# File lib/protobuf/rpc/service_filters.rb, line 46
def define_filter(type, filter, options = {})
  return if filter_defined?(type, filter)
  filters[type] << options.merge(:callable => filter)
  remember_filter(type, filter)
end
defined_filters() click to toggle source
# File lib/protobuf/rpc/service_filters.rb, line 52
def defined_filters
  @defined_filters ||= Hash.new { |h, k| h[k] = Set.new }
end
filter_defined?(type, filter) click to toggle source

Check to see if the filter has been defined.

# File lib/protobuf/rpc/service_filters.rb, line 58
def filter_defined?(type, filter)
  defined_filters[type].include?(filter)
end
remember_filter(type, filter) click to toggle source

Remember that we stored the filter.

# File lib/protobuf/rpc/service_filters.rb, line 64
def remember_filter(type, filter)
  defined_filters[type] << filter
end
set_filters(type, *args) click to toggle source

Takes a list of actually (or potentially) callable objects. TODO: add support for if/unless TODO: add support for only/except sub-filters

# File lib/protobuf/rpc/service_filters.rb, line 72
def set_filters(type, *args)
  options = args.last.is_a?(Hash) ? args.pop : {}
  args.each do |filter|
    define_filter(type, filter, options)
  end
end