class MogileFS::Pool
Constants
- BadObjectError
Attributes
purge_keep[RW]
Must be a positive Integer that is smaller than :purge_threshold Default: 2
purge_threshold[RW]
Must be a positive Integer that is greater than :purge_keep Default: 5
Public Class Methods
new(klass, *args)
click to toggle source
# File lib/mogilefs/pool.rb, line 15 def initialize(klass, *args) @args = args @klass = klass @queue = Queue.new @objects = {} @purge_threshold = 5 @purge_keep = 2 end
Public Instance Methods
get()
click to toggle source
# File lib/mogilefs/pool.rb, line 24 def get @queue.pop true rescue ThreadError object = @klass.new(*@args) @objects[object] = object end
purge()
click to toggle source
# File lib/mogilefs/pool.rb, line 46 def purge return if @queue.length < @purge_threshold begin until @queue.length <= @purge_keep obj = @queue.pop true @objects.delete obj obj.backend.shutdown if MogileFS::Client === obj end rescue ThreadError end end
put(o)
click to toggle source
# File lib/mogilefs/pool.rb, line 31 def put(o) raise BadObjectError unless @objects.include? o @queue.push o purge end
use() { |object| ... }
click to toggle source
# File lib/mogilefs/pool.rb, line 37 def use object = get yield object nil ensure put object nil end