Class: Termfront::Network::Server
- Inherits:
-
Object
- Object
- Termfront::Network::Server
- Defined in:
- lib/termfront/network/server.rb
Constant Summary collapse
- TEAM_SIZES =
[1, 2, 4].freeze
- PVP_MAP =
[ "####################", "#........##........#", "#........##........#", "#..................#", "#..##........##....#", "#..##........##....#", "#..................#", "#..................#", "#....##........##..#", "#....##........##..#", "#..................#", "#........##........#", "#........##........#", "####################" ].freeze
- PVP_SPAWN_CANDIDATES =
[ [2.5, 2.5, 0.0], [2.5, 11.5, 0.0], [5.5, 5.5, 0.0], [4.5, 9.5, 0.0], [17.5, 11.5, Math::PI], [17.5, 2.5, Math::PI], [14.5, 8.5, Math::PI], [15.5, 4.5, Math::PI] ].freeze
Instance Method Summary collapse
-
#initialize(port: Config::PVP_PORT) ⇒ Server
constructor
A new instance of Server.
- #run ⇒ Object
Constructor Details
#initialize(port: Config::PVP_PORT) ⇒ Server
Returns a new instance of Server.
38 39 40 41 42 43 |
# File 'lib/termfront/network/server.rb', line 38 def initialize(port: Config::PVP_PORT) @port = port @queue_mutex = Mutex.new @queues = TEAM_SIZES.to_h { |team_size| [team_size, []] } @wavesfight_queues = Hash.new { |hash, key| hash[key] = [] } end |
Instance Method Details
#run ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/termfront/network/server.rb', line 45 def run cert, key = load_or_create_cert ctx = OpenSSL::SSL::SSLContext.new ctx.cert = cert ctx.key = key tcp_server = TCPServer.new("0.0.0.0", @port) ssl_server = OpenSSL::SSL::SSLServer.new(tcp_server, ctx) ssl_server.start_immediately = true puts "Termfront PvP server listening on 0.0.0.0:#{@port}" loop do begin client = ssl_server.accept configure_client(client) enqueue_player(client) rescue OpenSSL::SSL::SSLError => e puts "SSL handshake failed: #{e.}" rescue StandardError => e puts "Accept error: #{e.}" end end end |