lib/volt/utils/generic_counting_pool.rb in volt-0.6.5 vs lib/volt/utils/generic_counting_pool.rb in volt-0.7.0
- old
+ new
@@ -1,42 +1,42 @@
require 'volt/utils/generic_pool'
# A counting pool behaves like a normal GenericPool, except for
# each time lookup is called, remove should be called when complete.
-# The item will be completely removed from the GenericCountingPool
+# The item will be completely removed from the GenericCountingPool
# only when it has been removed an equal number of times it has been
# looked up.
class GenericCountingPool < GenericPool
# return a created item with a count
def generate_new(*args)
[0, create(*args)]
end
-
+
# Finds an item and tracks that it was checked out. Use
# #remove when the item is no longer needed.
def find(*args, &block)
item = __lookup(*args, &block)
-
+
item[0] += 1
-
+
return item[1]
end
# Lookups an item
def lookup(*args, &block)
item = super(*args, &block)
-
+
return item[1]
end
-
+
def transform_item(item)
[0, item]
end
-
+
def remove(*args)
item = __lookup(*args)
item[0] -= 1
-
+
if item[0] == 0
# Last one using this item has removed it.
super(*args)
end
end