From 725adcc6986bc2658d92ea3ebebe61d2b83060ad Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 9 May 2011 00:17:06 +0000 Subject: split out pool_size module coolio_thread_pool, neverblock both use it, and xepoll_thread_pool will support it next, too. --- lib/rainbows.rb | 1 + lib/rainbows/coolio_thread_pool.rb | 11 +---------- lib/rainbows/never_block.rb | 14 ++++---------- lib/rainbows/pool_size.rb | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 20 deletions(-) create mode 100644 lib/rainbows/pool_size.rb diff --git a/lib/rainbows.rb b/lib/rainbows.rb index 0b663ba..da7011a 100644 --- a/lib/rainbows.rb +++ b/lib/rainbows.rb @@ -151,6 +151,7 @@ module Rainbows autoload :SyncClose, 'rainbows/sync_close' autoload :ReverseProxy, 'rainbows/reverse_proxy' autoload :JoinThreads, 'rainbows/join_threads' + autoload :PoolSize, 'rainbows/pool_size' end require 'rainbows/error' diff --git a/lib/rainbows/coolio_thread_pool.rb b/lib/rainbows/coolio_thread_pool.rb index 3d32bfb..378e64d 100644 --- a/lib/rainbows/coolio_thread_pool.rb +++ b/lib/rainbows/coolio_thread_pool.rb @@ -17,17 +17,8 @@ module Rainbows::CoolioThreadPool # :stopdoc: autoload :Client, 'rainbows/coolio_thread_pool/client' - DEFAULTS = { - :pool_size => 20, # same default size as ThreadPool (w/o Coolio) - } + extend Rainbows::PoolSize #:startdoc: - - def self.setup # :nodoc: - o = Rainbows::O - DEFAULTS.each { |k,v| o[k] ||= v } - Integer === o[:pool_size] && o[:pool_size] > 0 or - raise ArgumentError, "pool_size must a be an Integer > 0" - end include Rainbows::Coolio::Core def init_worker_threads(master, queue) # :nodoc: diff --git a/lib/rainbows/never_block.rb b/lib/rainbows/never_block.rb index a11b81d..63d9af3 100644 --- a/lib/rainbows/never_block.rb +++ b/lib/rainbows/never_block.rb @@ -15,20 +15,14 @@ # end # module Rainbows::NeverBlock - # :stopdoc: - DEFAULTS = { - :pool_size => 20, # same default size used by NB - :backend => :EventMachine, # NeverBlock doesn't support Rev yet - } + extend Rainbows::PoolSize # same pool size NB core itself uses def self.setup # :nodoc: - o = Rainbows::O - DEFAULTS.each { |k,v| o[k] ||= v } - Integer === o[:pool_size] && o[:pool_size] > 0 or - raise ArgumentError, "pool_size must a be an Integer > 0" - Rainbows.const_get(o[:backend]) + super + Rainbows::O[:backend] ||= :EventMachine # no Cool.io support, yet + Rainbows.const_get(Rainbows::O[:backend]) require "never_block" # require EM first since we need a higher version end diff --git a/lib/rainbows/pool_size.rb b/lib/rainbows/pool_size.rb new file mode 100644 index 0000000..8089869 --- /dev/null +++ b/lib/rainbows/pool_size.rb @@ -0,0 +1,14 @@ +# -*- encoding: binary -*- +# :stopdoc: +module Rainbows::PoolSize + DEFAULTS = { + :pool_size => 50, # same as the default worker_connections + } + + def setup + o = Rainbows::O + DEFAULTS.each { |k,v| o[k] ||= v } + Integer === o[:pool_size] && o[:pool_size] > 0 or + raise ArgumentError, "pool_size must a be an Integer > 0" + end +end -- cgit v1.2.3-24-ge0c7