Skip to content

Commit

Permalink
Fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
jarib committed May 12, 2012
1 parent 34ad378 commit 7eafbec
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions bin/vnc-pool-service 100644 → 100755
@@ -1,43 +1,53 @@
require 'rack'
require 'vnctools'
require 'logger'


class VncPoolService
def initialize(size, port)
@pool = VncTools::ServerPool.new(size)
@pool.add_observer self
@port = port

@servers = {}
@log = Logger.new(STDOUT)
end

def start
Rack::Server.new(:app => self, :Port => @port).start
end

def call(env)
req = Rack::Request.new(env)
case req.path_info
when "/get"
server = @pool.get
@servers[server.hash] = server
success(server.hash.to_s)
@servers[server.display] = server
success server.display
when %r[/release/(.+)]
server = @servers[$1]
server = @servers.delete $1
server or return not_found


@pool.release server

success 'ok'
else
not_found
end
end

def success(data)
[200, {}, [data]]
end

def not_found(data = '')
[404, {}, [data]]
end

def update(*args)
@log.info args.inspect
end
end

pool_size = Integer(ARGV.first || 10)
VncPoolService.new(pool_size, 9090).start
VncPoolService.new(pool_size, 9090).start

0 comments on commit 7eafbec

Please sign in to comment.