Class: Mongoid::Sessions::SessionPool::Queue

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

Defined Under Namespace

Classes: ConnectionTimeoutError

Instance Method Summary collapse

Constructor Details

#initialize(lock = Monitor.new) ⇒ Queue

Returns a new instance of Queue.



7
8
9
10
11
12
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 7

def initialize(lock=Monitor.new)
  @lock = lock
  @cond = @lock.new_cond
  @num_waiting = 0
  @queue = []
end

Instance Method Details

#add(session) ⇒ Object



26
27
28
29
30
31
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 26

def add(session)
  synchronize do
    @queue.push session
    @cond.signal
  end
end

#any_waiting?Boolean

Returns:

  • (Boolean)


14
15
16
17
18
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 14

def any_waiting?
  synchronize do
    @num_waiting > 0
  end
end

#countObject



49
50
51
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 49

def count
  @queue.count
end

#num_waitingObject



20
21
22
23
24
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 20

def num_waiting
  synchronize do
    @num_waiting
  end
end

#poll(timeout = nil) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 39

def poll(timeout = nil)
  synchronize do
    if timeout
      no_wait_poll || wait_poll(timeout)
    else
      no_wait_poll
    end
  end
end

#removeObject



33
34
35
36
37
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 33

def remove
  synchronize do
    @queue.shift
  end
end