Class: Arachni::Support::Cache::LeastCostReplacement

Inherits:
Base
  • Object
show all
Defined in:
lib/arachni/support/cache/least_cost_replacement.rb

Overview

Least Cost Replacement cache implementation.

Maintains 3 cost classes (low, medium, high) ) and discards entries from the lowest cost classes in order to make room for new ones.

Constant Summary collapse

VALID_COSTS =
[ :low, :medium, :high ]

Instance Attribute Summary

Attributes inherited from Base

#max_size

Instance Method Summary collapse

Methods inherited from Base

#==, #[], #[]=, #any?, #capped?, #delete, #dup, #empty?, #fetch_or_store, #hash, #include?, #size, #uncap, #uncapped?

Constructor Details

#initializeLeastCostReplacement

Returns a new instance of LeastCostReplacement.

See Also:

  • Cache::Base#initialize


23
24
25
26
# File 'lib/arachni/support/cache/least_cost_replacement.rb', line 23

def initialize( * )
    super
    reset_costs
end

Instance Method Details

#clearObject

See Also:

  • Cache::Base#clear


48
49
50
51
52
# File 'lib/arachni/support/cache/least_cost_replacement.rb', line 48

def clear
    super
ensure
    reset_costs
end

#store(k, v, cost = :low) ⇒ Object

Storage method

Parameters:

  • k (Object)

    Entry key.

  • v (Object)

    Object to store.

  • cost (Symbol) (defaults to: :low)

Returns:

See Also:



39
40
41
42
43
44
45
# File 'lib/arachni/support/cache/least_cost_replacement.rb', line 39

def store( k, v, cost = :low )
    fail( "invalid cost: #{cost}" ) if !valid_cost?( cost )

    super( k, v )
ensure
    @costs[cost] << k
end