module Mongoid::Sessions

Public Class Methods

default() click to toggle source
# File lib/mongoid_connection_pool/mongoid/sessions.rb, line 29
def default
  with_name(:default)
end
disconnect(thread=Thread.current) click to toggle source
# File lib/mongoid_connection_pool/mongoid/sessions.rb, line 16
def disconnect(thread=Thread.current)
  synchronize do
    @session_pool.try(:each) do |name, pool|
      if thread
        pool.session_for(thread).try(:disconnect)
      else
        pool.sessions.try(:each) { |session| session.disconnect }
      end
    end
  end
  true
end
session_pool(name=:default) click to toggle source
# File lib/mongoid_connection_pool/mongoid/sessions.rb, line 11
def session_pool(name=:default)
  synchronize { @session_pool ||= ThreadSafe::Cache.new }
  @session_pool.fetch(name) { build_session_pool(name) }
end
synchronize(&block) click to toggle source
# File lib/mongoid_connection_pool/mongoid/sessions.rb, line 6
def synchronize(&block)
  @lock ||= Mutex.new
  @lock.synchronize(&block)
end
with_name(name) click to toggle source
# File lib/mongoid_connection_pool/mongoid/sessions.rb, line 33
def with_name(name)
  session_pool(name).session_for(Thread.current) ||
    session_pool(name).checkout
end
with_session(name=:default) { || ... } click to toggle source
# File lib/mongoid_connection_pool/mongoid/sessions.rb, line 38
def with_session(name=:default)
  yield
ensure
  reap_current_session(name)
end

Private Class Methods

build_session_pool(name) click to toggle source
# File lib/mongoid_connection_pool/mongoid/sessions.rb, line 51
def build_session_pool(name)
  @session_pool[name] = SessionPool.new(
    :size             => Config.session_pool_size,
    :name             => name,
    :checkout_timeout => Config.session_checkout_timeout,
    :reap_frequency   => Config.session_reap_frequency)
end
reap_current_session(name, thread = Thread.current) click to toggle source
# File lib/mongoid_connection_pool/mongoid/sessions.rb, line 46
def reap_current_session(name, thread = Thread.current)
  session_pool(name).checkin_from_thread thread
  true
end