Class: Mongoid::Sessions::SessionPool::Queue
- Inherits:
-
Object
- Object
- Mongoid::Sessions::SessionPool::Queue
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
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
|
#count ⇒ Object
49
50
51
|
# File 'lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb', line 49
def count
@queue.count
end
|
#num_waiting ⇒ Object
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
|
#remove ⇒ Object
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
|