Generic pooling library for creating connection pools
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
Gemfile
History.md
LICENSE.txt
README.md
Rakefile
gene_pool.gemspec

README.md

gene_pool

DESCRIPTION:

Generic pooling library for connection pools.

FEATURES/PROBLEMS:

  • Thread-safe
  • Pure ruby

INSTALL:

gem install gene_pool

EXAMPLE USAGE:

  class MyClient
    # Print a logger warning if it requires more than 0.25 seconds to acquire a connection.
    # Close and reopen the connection if it hasn't been used for 10 seconds.
    # Raise Timeout::Error if waiting for a connection more than 3 seconds.
    @@gene_pool = GenePool.new(:name         => 'MyClient',
                               :pool_size    => 10,
                               :timeout      => 3,
                               :warn_timeout => 0.25,
                               :idle_timeout => 10,
                               :logger       => Rails.logger,
                               :close_proc   => :close) do
      TCPSocket.new('myserver', 4321)
    end

    def send_message
      @@gene_pool.with_connection do |socket|
        begin
          # use socket here
        rescue Exception => e
          # If the socket gets closed, remove it from the pool
          @@gene_pool.remove(socket)
        end
      end
    end

    # Equivalent to send_message above
    def send_message_auto_remove
      # On exception, close and remeove socket from pool
      @@gene_pool.with_connection_auto_remove do |socket|
        # use socket here,
      end
    end

    def send_message_auto_retry
      # On exception, close and reopen socket and perform retry
      @@gene_pool.with_connection_auto_retry do |socket|
        # use socket here,
      end
    end
  end

Copyright

Copyright (c) 2010-2012 Brad Pardee. See LICENSE for details.