Skip to content

Commit

Permalink
Prevent Pooling from being included more than once
Browse files Browse the repository at this point in the history
  • Loading branch information
bmatcuk committed Oct 9, 2012
1 parent f889615 commit 96a3629
Showing 1 changed file with 25 additions and 21 deletions.
46 changes: 25 additions & 21 deletions data_objects/lib/data_objects/pooling.rb
Expand Up @@ -98,33 +98,37 @@ class InvalidResourceError < StandardError
end

def self.included(target)
target.class_eval do
class << self
alias __new new
end
lock.synchronize do
unless target.respond_to? :__pools
target.class_eval do
class << self
alias __new new
end

@__pools = {}
@__pool_lock = Mutex.new
@__pool_wait = ConditionVariable.new
@__pools = {}
@__pool_lock = Mutex.new
@__pool_wait = ConditionVariable.new

def self.__pool_lock
@__pool_lock
end
def self.__pool_lock
@__pool_lock
end

def self.__pool_wait
@__pool_wait
end
def self.__pool_wait
@__pool_wait
end

def self.new(*args)
(@__pools[args] ||= __pool_lock.synchronize { Pool.new(self.pool_size, self, args) }).new
end
def self.new(*args)
(@__pools[args] ||= __pool_lock.synchronize { Pool.new(self.pool_size, self, args) }).new
end

def self.__pools
@__pools
end
def self.__pools
@__pools
end

def self.pool_size
8
def self.pool_size
8
end
end
end
end
end
Expand Down

0 comments on commit 96a3629

Please sign in to comment.