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}"