Class: MockDnsServer::ConditionalAction

Inherits:
Object
  • Object
show all
Defined in:
lib/mock_dns_server/conditional_action.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(condition, action, max_uses) ⇒ Object

Returns the value returned by the action, e.g. the message, or array of messages, it sent.

Parameters:

  • condition

    a proc/lambda that, when called with request as a param, returns true or false to determine whether or not the action will be executed

  • action

    the code (lambda or proc) to be executed; takes incoming message, sender, server context, and (optionally) protocol as parameters and performs an action

  • max_uses

    maximum number of times this action should be executed



15
16
17
18
19
20
# File 'lib/mock_dns_server/conditional_action.rb', line 15

def initialize(condition, action, max_uses)
  @condition = condition
  @action = action
  @max_uses = max_uses
  @use_count = 0
end

Instance Attribute Details

#actionObject

Returns the value of attribute action.



5
6
7
# File 'lib/mock_dns_server/conditional_action.rb', line 5

def action
  @action
end

#conditionObject

Returns the value of attribute condition.



5
6
7
# File 'lib/mock_dns_server/conditional_action.rb', line 5

def condition
  @condition
end

#descriptionObject

Returns the value of attribute description.



5
6
7
# File 'lib/mock_dns_server/conditional_action.rb', line 5

def description
  @description
end

#max_usesObject

Returns the value of attribute max_uses.



5
6
7
# File 'lib/mock_dns_server/conditional_action.rb', line 5

def max_uses
  @max_uses
end

#use_countObject

Returns the value of attribute use_count.



5
6
7
# File 'lib/mock_dns_server/conditional_action.rb', line 5

def use_count
  @use_count
end

Instance Method Details

#eligible_to_run?Boolean

Returns:

  • (Boolean)


31
32
33
34
# File 'lib/mock_dns_server/conditional_action.rb', line 31

def eligible_to_run?
  max_not_reached = max_uses.nil? || use_count < max_uses
  max_not_reached && condition.call
end

#increment_use_countObject



23
24
25
# File 'lib/mock_dns_server/conditional_action.rb', line 23

def increment_use_count
  @use_count += 1
end

#run(request, sender, context, protocol) ⇒ Object



36
37
38
39
# File 'lib/mock_dns_server/conditional_action.rb', line 36

def run(request, sender, context, protocol)
  # TODO: Output to history?
  action.call(request, sender, context, protocol)
end

#to_sObject



27
28
29
# File 'lib/mock_dns_server/conditional_action.rb', line 27

def to_s
  "#{super.to_s}; condition: #{condition.to_s}, action = #{action.to_s}, max_uses = #{max_uses}"
end