Add detach to server (closed #12)
This commit is contained in:
parent
8f647e165c
commit
b8893bda6a
|
@ -72,24 +72,14 @@ class TeeworldsServer
|
||||||
@hooks = {
|
@hooks = {
|
||||||
chat: []
|
chat: []
|
||||||
}
|
}
|
||||||
|
@thread_running = false
|
||||||
end
|
end
|
||||||
|
|
||||||
def on_chat(&block)
|
def on_chat(&block)
|
||||||
@hooks[:chat].push(block)
|
@hooks[:chat].push(block)
|
||||||
end
|
end
|
||||||
|
|
||||||
def run(ip, port)
|
def main_loop
|
||||||
@server_token = (1..4).to_a.map { |_| rand(0..255) }
|
|
||||||
@server_token = @server_token.map { |b| b.to_s(16).rjust(2, '0') }.join
|
|
||||||
puts "server token #{@server_token}"
|
|
||||||
@netbase = NetBase.new(verbose: @verbose)
|
|
||||||
NetChunk.reset
|
|
||||||
@ip = ip
|
|
||||||
@port = port
|
|
||||||
puts "listening on #{@ip}:#{@port} .."
|
|
||||||
@s = UDPSocket.new
|
|
||||||
@s.bind(@ip, @port)
|
|
||||||
@netbase.bind(@s)
|
|
||||||
loop do
|
loop do
|
||||||
tick
|
tick
|
||||||
# TODO: proper tick speed sleep
|
# TODO: proper tick speed sleep
|
||||||
|
@ -107,6 +97,34 @@ class TeeworldsServer
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def run(ip, port, options = {})
|
||||||
|
options[:detach] = options[:detach] || false
|
||||||
|
if options[:detach] && @thread_running
|
||||||
|
puts 'Error: server already running in a thread'
|
||||||
|
return
|
||||||
|
end
|
||||||
|
@server_token = (1..4).to_a.map { |_| rand(0..255) }
|
||||||
|
@server_token = @server_token.map { |b| b.to_s(16).rjust(2, '0') }.join
|
||||||
|
puts "server token #{@server_token}"
|
||||||
|
@netbase = NetBase.new(verbose: @verbose)
|
||||||
|
NetChunk.reset
|
||||||
|
@ip = ip
|
||||||
|
@port = port
|
||||||
|
puts "listening on #{@ip}:#{@port} .."
|
||||||
|
@s = UDPSocket.new
|
||||||
|
@s.bind(@ip, @port)
|
||||||
|
@netbase.bind(@s)
|
||||||
|
|
||||||
|
if options[:detach]
|
||||||
|
@thread_running = true
|
||||||
|
Thread.new do
|
||||||
|
main_loop
|
||||||
|
end
|
||||||
|
else
|
||||||
|
main_loop
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def on_message(chunk, packet)
|
def on_message(chunk, packet)
|
||||||
puts "got game chunk: #{chunk}"
|
puts "got game chunk: #{chunk}"
|
||||||
case chunk.msg
|
case chunk.msg
|
||||||
|
|
|
@ -11,4 +11,4 @@ srv.on_chat do |context, msg|
|
||||||
puts "[chat] #{msg.author.name}: #{msg.message}"
|
puts "[chat] #{msg.author.name}: #{msg.message}"
|
||||||
end
|
end
|
||||||
|
|
||||||
srv.run('127.0.0.1', 8303)
|
srv.run('127.0.0.1', 8303, detach: false)
|
||||||
|
|
Loading…
Reference in a new issue