Sha256: 25fc361d5bd546202e255691f2c1b6da6225545a0406aad4f577d77fb8a964c9

Contents?: true

Size: 1.16 KB

Versions: 69

Compression:

Stored size: 1.16 KB

Contents

module God
  module Conditions
    
    # This condition degrades its interval by a factor of two for 3 tries before failing
    class DegradingLambda < PollCondition
      attr_accessor :lambda
      
      def initialize
        super
        @tries = 0
      end
      
      def valid?
        valid = true
        valid &= complain("Attribute 'lambda' must be specified", self) if self.lambda.nil?
        valid
      end
      
      def test
        puts "Calling test. Interval at #{self.interval}"
        @original_interval ||= self.interval
        unless pass?
          if @tries == 2
            self.info = "lambda condition was satisfied"
            return true
          end
          self.interval = self.interval / 2.0
          @tries += 1
        else
          @tries = 0
          self.interval = @original_interval
        end
        
        self.info = "lambda condition was not satisfied"
        false
      end
      
      private
        
        def pass?
          begin
            Timeout::timeout(@interval) {
              self.lambda.call()
            }
          rescue Timeout::Error
            false
          end
        end
    end

  end
end

Version data entries

69 entries across 69 versions & 21 rubygems

Version Path
dguettler-god-0.7.13.2 lib/god/conditions/degrading_lambda.rb
dguettler-god-0.7.13.3 lib/god/conditions/degrading_lambda.rb
dosire-god-0.7.10 lib/god/conditions/degrading_lambda.rb
dosire-god-0.7.12 lib/god/conditions/degrading_lambda.rb
dosire-god-0.7.9 lib/god/conditions/degrading_lambda.rb
dunedain289-god-0.7.12.1 lib/god/conditions/degrading_lambda.rb
dustin-god-0.7.7.1 lib/god/conditions/degrading_lambda.rb
eric-god-0.7.10 lib/god/conditions/degrading_lambda.rb
eric-god-0.7.11 lib/god/conditions/degrading_lambda.rb
eric-god-0.7.12 lib/god/conditions/degrading_lambda.rb
eric-god-0.7.14 lib/god/conditions/degrading_lambda.rb
eric-god-0.7.7 lib/god/conditions/degrading_lambda.rb
fotonauts-god-0.7.10 lib/god/conditions/degrading_lambda.rb
fotonauts-god-0.7.12 lib/god/conditions/degrading_lambda.rb
gohanlonllc-god-0.7.9 lib/god/conditions/degrading_lambda.rb
gordoncww-god-0.7.11.1 lib/god/conditions/degrading_lambda.rb
jreynolds-god-0.7.13 lib/god/conditions/degrading_lambda.rb
jwilkins-god-0.7.9 lib/god/conditions/degrading_lambda.rb
mathieuravaux-god-0.7.11 lib/god/conditions/degrading_lambda.rb
mojombo-god-0.7.10 lib/god/conditions/degrading_lambda.rb