From 02a6ac97c16808bc02607b8d5059fe4eab4b5204 Mon Sep 17 00:00:00 2001 From: Philippe PITTOLI Date: Thu, 16 Jan 2020 17:31:26 +0100 Subject: [PATCH] pongd is now an IPC service real-life example --- src/pongd.cr | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) 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}"