class Baleen::Server
Public Class Methods
new(docker_host, docker_port, port, project_file)
click to toggle source
# File lib/baleen/server.rb, line 15 def initialize(docker_host, docker_port, port, project_file) Docker.url = "http://#{docker_host}:#{docker_port}" Baleen::Project.load_project(project_file) @server = TCPServer.new("0.0.0.0", port) async.run end
Public Instance Methods
find_project(name, conn)
click to toggle source
# File lib/baleen/server.rb, line 76 def find_project(name, conn) project = Baleen::Project.find_project_by_name(name.to_sym) unless project conn.notify_exception("No project found: #{name}") raise Baleen::Error::ProjectNotFound end project end
handle_connection(socket)
click to toggle source
# File lib/baleen/server.rb, line 34 def handle_connection(socket) loop { handle_request(socket) } rescue Exception => ex case ex when IOError; nil # when trying to close already closed socket else puts ex.inspect raise ex end end
handle_request(socket)
click to toggle source
# File lib/baleen/server.rb, line 46 def handle_request(socket) json_request = socket.gets if json_request.nil? socket.close return end conn = Connection.new(socket) request = parse_request(json_request) begin if request.is_a? Baleen::Task::RunProject task = find_project(request.project, conn).task else task = request # request itself is a task end rescue Baleen::Error::ProjectNotFound return end RunnerManager.new(conn, task).run do |response| conn.respond(response) end end
parse_request(request)
click to toggle source
# File lib/baleen/server.rb, line 72 def parse_request(request) Serializable.deserialize(request) end
run()
click to toggle source
# File lib/baleen/server.rb, line 22 def run loop { async.handle_connection @server.accept } end
shutdown()
click to toggle source
# File lib/baleen/server.rb, line 26 def shutdown begin @server.close rescue IOError BL.info "Shutting down baleen-server..." end end