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