Class: MockDnsServer::ConditionalActions

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/mock_dns_server/conditional_actions.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context) ⇒ ConditionalActions

Returns a new instance of ConditionalActions.



14
15
16
17
# File 'lib/mock_dns_server/conditional_actions.rb', line 14

def initialize(context)
  @context = context
  @records = ThreadSafe::Array.new
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



8
9
10
# File 'lib/mock_dns_server/conditional_actions.rb', line 8

def context
  @context
end

Instance Method Details

#add(conditional_action) ⇒ Object



52
53
54
55
56
# 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?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/mock_dns_server/conditional_actions.rb', line 69

def empty?
  size == 0
end

#find_conditional_action(request, protocol) ⇒ Object



20
21
22
# 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) ⇒ Object



42
43
44
45
46
47
48
49
50
# 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) ⇒ Object



59
60
61
# File 'lib/mock_dns_server/conditional_actions.rb', line 59

def remove(conditional_action)
  @records.delete(conditional_action)
end

#respond_to(request, sender, protocol) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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

#sizeObject



64
65
66
# File 'lib/mock_dns_server/conditional_actions.rb', line 64

def size
  @records.size
end