Class: Mongoid::Sessions::SessionPool::Reaper

Inherits:
Object
  • Object
show all
Defined in:
lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(frequency, pool) ⇒ Reaper

Returns a new instance of Reaper.



238
239
240
241
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 238

def initialize(frequency, pool)
  @frequency = frequency
  @pool = pool
end

Instance Attribute Details

#frequencyObject (readonly)

Returns the value of attribute frequency.



235
236
237
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 235

def frequency
  @frequency
end

#poolObject (readonly)

Returns the value of attribute pool.



234
235
236
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 234

def pool
  @pool
end

#reaperObject (readonly)

Returns the value of attribute reaper.



236
237
238
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 236

def reaper
  @reaper
end

Instance Method Details

#alive?Boolean

Returns:

  • (Boolean)


243
244
245
246
247
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 243

def alive?
  return true unless frequency
  # under rbx 2.2.4 this now works, also works correctly under mri at latest patch levels
  reaper.alive?
end

#runObject



249
250
251
252
253
254
255
256
257
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 249

def run
  return unless frequency
  @reaper = Thread.new(frequency, pool) do |t, p|
    while true
      sleep t
      p.reap
    end
  end
end