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:

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