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