class MockDnsServer::ConditionalActions

Attributes

context[R]

Public Class Methods

new(context) click to toggle source
# File lib/mock_dns_server/conditional_actions.rb, line 14
def initialize(context)
  @context = context
  @records = ThreadSafe::Array.new
end

Public Instance Methods

add(conditional_action) click to toggle source
# File lib/mock_dns_server/conditional_actions.rb, line 52
def add(conditional_action)
  # Place new record at beginning of array, so that the most recently
  # added records are found first.
  @records.unshift(conditional_action)
end
empty?() click to toggle source
# File lib/mock_dns_server/conditional_actions.rb, line 69
def empty?
  size == 0
end
find_conditional_action(request, protocol) click to toggle source
# File lib/mock_dns_server/conditional_actions.rb, line 20
def find_conditional_action(request, protocol)
  @records.detect { |cond_action| cond_action.condition.call(request, protocol) }
end
handle_use_count(conditional_action) click to toggle source
# File lib/mock_dns_server/conditional_actions.rb, line 42
def handle_use_count(conditional_action)
  max_uses = conditional_action.max_uses
  we_care = max_uses && max_uses > 0
  if we_care && conditional_action.use_count >= max_uses
    history.add_conditional_action_removal(conditional_action.description)
    @records.delete(conditional_action)
  end

end
remove(conditional_action) click to toggle source
# File lib/mock_dns_server/conditional_actions.rb, line 59
def remove(conditional_action)
  @records.delete(conditional_action)
end
respond_to(request, sender, protocol) click to toggle source
# File lib/mock_dns_server/conditional_actions.rb, line 25
def respond_to(request, sender, protocol)
  conditional_action = find_conditional_action(request, protocol)

  if conditional_action
    puts 'Found action' if verbose
    history.add_incoming(request, sender, protocol, conditional_action.description)
    conditional_action.run(request, sender, context, protocol)
    puts 'Completed action' if verbose
    conditional_action.increment_use_count
    handle_use_count(conditional_action)
  else
    puts 'Action not found' if verbose
    history.add_action_not_found(request)
  end
end
size() click to toggle source
# File lib/mock_dns_server/conditional_actions.rb, line 64
def size
  @records.size
end