diff --git a/src/pongd.cr b/src/pongd.cr index 8cd46b2..74a8cdc 100644 --- a/src/pongd.cr +++ b/src/pongd.cr @@ -20,8 +20,9 @@ OptionParser.parse do |parser| end end +service = IPC::Service.new (service_name) -IPC::Service.new (service_name) do |event| +service.loop do |event| case event when IPC::Event::Timer if verbosity >= 1 @@ -36,13 +37,23 @@ IPC::Service.new (service_name) do |event| puts "#{CBLUE}IPC::Event::Disconnection#{CRESET}, client: #{event.connection.fd}" end when IPC::Event::Message - if verbosity >= 1 - puts "#{CGREEN}IPC::Event::Message#{CRESET}, client: #{event.connection.fd}" - if verbosity == 2 - puts "#{CBLUE}message: #{event.message} #{CRESET}" + begin + if verbosity >= 1 + puts "#{CGREEN}IPC::Event::Message#{CRESET}, client: #{event.connection.fd}" + if verbosity >= 2 + m = String.new event.message.payload + puts "#{CBLUE}message type #{event.message.type}: #{m} #{CRESET}" + end end + event.connection.send event.message + if verbosity >= 2 + puts "#{CBLUE}message sent#{CRESET}" + end + + rescue e + puts "#{CRED}#{e.message}#{CRESET}" + service.remove_fd event.connection.fd end - event.connection.send event.message else if verbosity >= 1 puts "#{CRED}Exception: message = #{event.message} #{CRESET}"