Class: VncTools::ServerPool

Inherits:
Object
  • Object
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

#getObject

Raises:



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

#sizeObject



23
24
25
# File 'lib/vnctools/server_pool.rb', line 23

def size
  @servers.size
end

#stopObject



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