class MockDnsServer::ConditionalAction

Attributes

action[RW]
condition[RW]
description[RW]
max_uses[RW]
use_count[RW]

Public Class Methods

new(condition, action, max_uses) click to toggle source

@param 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

@param action the code (lambda or proc) to be executed; takes incoming message,

sender, server context, and (optionally) protocol as parameters
and performs an action

@param max_uses maximum number of times this action should be executed @return the value returned by the action, e.g. the message, or array of messages, it sent

# 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

Public Instance Methods

eligible_to_run?() click to toggle source
# 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_count() click to toggle source
# File lib/mock_dns_server/conditional_action.rb, line 23
def increment_use_count
  @use_count += 1
end
run(request, sender, context, protocol) click to toggle source
# 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_s() click to toggle source
# 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