Sha256: 4b21e089ba6c3477cc1f69e1c42c6920e86996f17a9a43354bc4435840412344
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
require 'docker' require 'awesome_print' require 'socket' require 'celluloid/io' require 'celluloid/autostart' require 'json' module Baleen class Server include Celluloid::IO finalizer :shutdown attr_accessor :containers def initialize(docker_host: "127.0.0.1", docker_port: 4243, port: 5533) @base_url = "http://#{docker_host}:#{docker_port}" @docker = Docker::API.new(base_url: @base_url) @containers = @docker.containers @server = TCPServer.new("0.0.0.0", port) async.run end def run loop { async.handle_connection @server.accept } end def shutdown @server.close if @server end def handle_connection(socket) loop { handle_request(socket) } rescue Exception => ex case ex when IOError; nil # when trying to close already closed socket else warn "Unknown exception occured" ap ex raise ex end end def handle_request(socket) message = socket.gets if message.nil? socket.close return end msg = parse_request(message) case msg when Message::Request::PingPong socket.puts "pong" when Message::Request::ClientDisconnect socket.close when Message::Request::Cucumber manager = RunnerManager.new(@containers, socket, msg) manager.run else warn "Received unknown request" ap msg end end def parse_request(message) #info "Got request from client" #ap message Baleen::Message::Decoder.new(message).decode end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
baleen-0.0.10 | lib/baleen/server.rb |
baleen-0.0.9 | lib/baleen/server.rb |