module WoolenCommon
Generic connection pool class for e.g. sharing a limited number of network connections among many threads. Note: Connections are lazily created.
Example usage with block (faster):
@pool = ConnectionPool.new { Redis.new } @pool.with do |redis| redis.lpop('my-list') if redis.llen('my-list') > 0 end
Using optional timeout override (for that single invocation)
@pool.with(timeout: 2.0) do |redis| redis.lpop('my-list') if redis.llen('my-list') > 0 end
Example usage replacing an existing connection (slower):
$redis = ConnectionPool.wrap { Redis.new } def do_work $redis.lpop('my-list') if $redis.llen('my-list') > 0 end
Accepts the following options:
-
:size - number of connections to pool, defaults to 5
-
:timeout - amount of time to wait for a connection if none currently available, defaults to 5 seconds
Constants
- CLIENT_DEFAULT_PORT
- DEFAULT_CLIENT_ADDR
- MONITOR_DEFAULT_CFG
- SERVER_DEFAULT_PORT
- VERSION
Public Class Methods
load_all_file()
click to toggle source
# File lib/woolen_common.rb, line 16 def load_all_file require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_ext', 'string')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_ext', 'blank')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_ext', 'drb_ext')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_ext', 'win32_ole')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'common_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'addr_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'type_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'logger')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'system_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'system_monitor')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'splib')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'action_pool_proxy')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ssh_proxy')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'drb_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'pcap', 'pcap')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ver_ctrl_middle_ware')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_proxy')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'cache')}" end
setup(prj_root=nil)
click to toggle source
# File lib/woolen_common.rb, line 7 def setup(prj_root=nil) unless prj_root prj_root = File.dirname caller[0].split(':')[0] end ConfigManager.project_root = prj_root puts "the prj_root:#{prj_root}" load_all_file end
Private Instance Methods
load_all_file()
click to toggle source
# File lib/woolen_common.rb, line 16 def load_all_file require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_ext', 'string')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_ext', 'blank')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_ext', 'drb_ext')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_ext', 'win32_ole')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'common_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'addr_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'type_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'logger')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'system_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'system_monitor')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'splib')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'action_pool_proxy')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ssh_proxy')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'drb_helper')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'pcap', 'pcap')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ver_ctrl_middle_ware')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'ruby_proxy')}" require "#{File.join(File.dirname(__FILE__), 'woolen_common', 'cache')}" end
setup(prj_root=nil)
click to toggle source
# File lib/woolen_common.rb, line 7 def setup(prj_root=nil) unless prj_root prj_root = File.dirname caller[0].split(':')[0] end ConfigManager.project_root = prj_root puts "the prj_root:#{prj_root}" load_all_file end