Class: VncTools::ServerPool
- Inherits:
-
Object
- Object
- VncTools::ServerPool
show all
- Includes:
- Observable
- Defined in:
- lib/vnctools/server_pool.rb
Defined Under Namespace
Classes: OutOfDisplaysError, TooManyDisplaysError
Instance Method Summary
collapse
Constructor Details
#initialize(capacity, klass = Server) ⇒ ServerPool
Returns a new instance of ServerPool.
5
6
7
8
9
10
11
|
# File 'lib/vnctools/server_pool.rb', line 5
def initialize(capacity, klass = Server)
@capacity = capacity
@running = []
@server_class = klass
create_servers
end
|
Instance Method Details
#get ⇒ Object
27
28
29
30
31
32
33
34
|
# File 'lib/vnctools/server_pool.rb', line 27
def get
raise OutOfDisplaysError if @servers.empty?
server = next_server
fire :on_display_fetched, server
server
end
|
#release(server) ⇒ Object
36
37
38
39
40
41
|
# File 'lib/vnctools/server_pool.rb', line 36
def release(server)
raise TooManyDisplaysError if size == @capacity
fire :on_display_released, server
@servers.unshift server
end
|
#size ⇒ Object
23
24
25
|
# File 'lib/vnctools/server_pool.rb', line 23
def size
@servers.size
end
|
#stop ⇒ Object
13
14
15
16
17
18
19
20
21
|
# File 'lib/vnctools/server_pool.rb', line 13
def stop
running.dup.each do |s|
fire :on_display_stopping, s
stop_server s
running.delete s
end
create_servers
end
|