changeset 493:69e24ce9baed

Irccd: switch to Boost.Signals2, closes #575
author David Demelier <markand@malikania.fr>
date Tue, 22 Aug 2017 14:11:28 +0200
parents 173c52d3120b
children 9fcdd3c9cd33
files libirccd/irccd/server.hpp libirccd/irccd/service.cpp libirccd/irccd/transport.hpp
diffstat 3 files changed, 40 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/libirccd/irccd/server.hpp	Wed Sep 27 09:42:57 2017 +0200
+++ b/libirccd/irccd/server.hpp	Tue Aug 22 14:11:28 2017 +0200
@@ -35,12 +35,12 @@
 #include <utility>
 #include <vector>
 
+#include <boost/signals2/signal.hpp>
 #include <boost/timer/timer.hpp>
 
 #include <json.hpp>
 
 #include "net.hpp"
-#include "signals.hpp"
 #include "sysconfig.hpp"
 
 namespace irccd {
@@ -286,7 +286,7 @@
      *
      * Triggered when someone changed the channel mode.
      */
-    Signal<channel_mode_event> on_channel_mode;
+    boost::signals2::signal<void (channel_mode_event)> on_channel_mode;
 
     /**
      * Signal: on_channel_notice
@@ -294,7 +294,7 @@
      *
      * Triggered when a notice has been sent on a channel.
      */
-    Signal<channel_notice_event> on_channel_notice;
+    boost::signals2::signal<void (channel_notice_event)> on_channel_notice;
 
     /**
      * Signal: on_connect
@@ -302,7 +302,7 @@
      *
      * Triggered when the server is successfully connected.
      */
-    Signal<connect_event> on_connect;
+    boost::signals2::signal<void (connect_event)> on_connect;
 
     /**
      * Signal: on_die
@@ -310,7 +310,7 @@
      *
      * The server is dead.
      */
-    Signal<> on_die;
+    boost::signals2::signal<void ()> on_die;
 
     /**
      * Signal: on_invite
@@ -318,7 +318,7 @@
      *
      * Triggered when an invite has been sent to you (the bot).
      */
-    Signal<invite_event> on_invite;
+    boost::signals2::signal<void (invite_event)> on_invite;
 
     /**
      * Signal: on_join
@@ -326,7 +326,7 @@
      *
      * Triggered when a user has joined the channel, it also includes you.
      */
-    Signal<join_event> on_join;
+    boost::signals2::signal<void (join_event)> on_join;
 
     /**
      * Signal: on_kick
@@ -334,7 +334,7 @@
      *
      * Triggered when someone has been kicked from a channel.
      */
-    Signal<kick_event> on_kick;
+    boost::signals2::signal<void (kick_event)> on_kick;
 
     /**
      * Signal: on_message
@@ -342,7 +342,7 @@
      *
      * Triggered when a message on a channel has been sent.
      */
-    Signal<message_event> on_message;
+    boost::signals2::signal<void (message_event)> on_message;
 
     /**
      * Signal: on_me
@@ -353,7 +353,7 @@
      * This is both used in a channel and in a private message so the target may
      * be a channel or your nickname.
      */
-    Signal<me_event> on_me;
+    boost::signals2::signal<void (me_event)> on_me;
 
     /**
      * Signal: on_mode
@@ -361,7 +361,7 @@
      *
      * Triggered when the server changed your user mode.
      */
-    Signal<mode_event> on_mode;
+    boost::signals2::signal<void (mode_event)> on_mode;
 
     /**
      * Signal: on_names
@@ -369,7 +369,7 @@
      *
      * Triggered when names listing has finished on a channel.
      */
-    Signal<names_event> on_names;
+    boost::signals2::signal<void (names_event)> on_names;
 
     /**
      * Signal: on_nick
@@ -377,7 +377,7 @@
      *
      * Triggered when someone changed its nickname, it also includes you.
      */
-    Signal<nick_event> on_nick;
+    boost::signals2::signal<void (nick_event)> on_nick;
 
     /**
      * Signal: on_notice
@@ -385,7 +385,7 @@
      *
      * Triggered when someone has sent a notice to you.
      */
-    Signal<notice_event> on_notice;
+    boost::signals2::signal<void (notice_event)> on_notice;
 
     /**
      * Signal: on_part
@@ -393,7 +393,7 @@
      *
      * Triggered when someone has left the channel.
      */
-    Signal<part_event> on_part;
+    boost::signals2::signal<void (part_event)> on_part;
 
     /**
      * Signal: on_query
@@ -401,7 +401,7 @@
      *
      * Triggered when someone has sent you a private message.
      */
-    Signal<query_event> on_query;
+    boost::signals2::signal<void (query_event)> on_query;
 
     /**
      * Signal: on_topic
@@ -409,7 +409,7 @@
      *
      * Triggered when someone changed the channel topic.
      */
-    Signal<topic_event> on_topic;
+    boost::signals2::signal<void (topic_event)> on_topic;
 
     /**
      * Signal: on_whois
@@ -417,7 +417,7 @@
      *
      * Triggered when whois information has been received.
      */
-    Signal<whois_event> on_whois;
+    boost::signals2::signal<void (whois_event)> on_whois;
 
 private:
     class state;
--- a/libirccd/irccd/service.cpp	Wed Sep 27 09:42:57 2017 +0200
+++ b/libirccd/irccd/service.cpp	Tue Aug 22 14:11:28 2017 +0200
@@ -863,26 +863,24 @@
 {
     assert(!has(server->name()));
 
-    using namespace std::placeholders;
-
     std::weak_ptr<class server> ptr(server);
 
-    server->on_channel_mode.connect(std::bind(&server_service::handle_channel_mode, this, _1));
-    server->on_channel_notice.connect(std::bind(&server_service::handle_channel_notice, this, _1));
-    server->on_connect.connect(std::bind(&server_service::handle_connect, this, _1));
-    server->on_invite.connect(std::bind(&server_service::handle_invite, this, _1));
-    server->on_join.connect(std::bind(&server_service::handle_join, this, _1));
-    server->on_kick.connect(std::bind(&server_service::handle_kick, this, _1));
-    server->on_message.connect(std::bind(&server_service::handle_message, this, _1));
-    server->on_me.connect(std::bind(&server_service::handle_me, this, _1));
-    server->on_mode.connect(std::bind(&server_service::handle_mode, this, _1));
-    server->on_names.connect(std::bind(&server_service::handle_names, this, _1));
-    server->on_nick.connect(std::bind(&server_service::handle_nick, this, _1));
-    server->on_notice.connect(std::bind(&server_service::handle_notice, this, _1));
-    server->on_part.connect(std::bind(&server_service::handle_part, this, _1));
-    server->on_query.connect(std::bind(&server_service::handle_query, this, _1));
-    server->on_topic.connect(std::bind(&server_service::handle_topic, this, _1));
-    server->on_whois.connect(std::bind(&server_service::handle_whois, this, _1));
+    server->on_channel_mode.connect(boost::bind(&server_service::handle_channel_mode, this, _1));
+    server->on_channel_notice.connect(boost::bind(&server_service::handle_channel_notice, this, _1));
+    server->on_connect.connect(boost::bind(&server_service::handle_connect, this, _1));
+    server->on_invite.connect(boost::bind(&server_service::handle_invite, this, _1));
+    server->on_join.connect(boost::bind(&server_service::handle_join, this, _1));
+    server->on_kick.connect(boost::bind(&server_service::handle_kick, this, _1));
+    server->on_message.connect(boost::bind(&server_service::handle_message, this, _1));
+    server->on_me.connect(boost::bind(&server_service::handle_me, this, _1));
+    server->on_mode.connect(boost::bind(&server_service::handle_mode, this, _1));
+    server->on_names.connect(boost::bind(&server_service::handle_names, this, _1));
+    server->on_nick.connect(boost::bind(&server_service::handle_nick, this, _1));
+    server->on_notice.connect(boost::bind(&server_service::handle_notice, this, _1));
+    server->on_part.connect(boost::bind(&server_service::handle_part, this, _1));
+    server->on_query.connect(boost::bind(&server_service::handle_query, this, _1));
+    server->on_topic.connect(boost::bind(&server_service::handle_topic, this, _1));
+    server->on_whois.connect(boost::bind(&server_service::handle_whois, this, _1));
     server->on_die.connect([this, ptr] () {
         irccd_.post([=] (irccd&) {
             auto server = ptr.lock();
@@ -1010,8 +1008,6 @@
 
 void transport_service::sync(fd_set& in, fd_set& out)
 {
-    using namespace std::placeholders;
-
     // Transport clients.
     for (const auto& client : clients_) {
         try {
@@ -1034,8 +1030,8 @@
 
         try {
             // Connect signals.
-            client->on_command.connect(std::bind(&transport_service::handle_command, this, ptr, _1));
-            client->on_die.connect(std::bind(&transport_service::handle_die, this, ptr));
+            client->on_command.connect(boost::bind(&transport_service::handle_command, this, ptr, _1));
+            client->on_die.connect(boost::bind(&transport_service::handle_die, this, ptr));
 
             // Register it.
             clients_.push_back(std::move(client));
--- a/libirccd/irccd/transport.hpp	Wed Sep 27 09:42:57 2017 +0200
+++ b/libirccd/irccd/transport.hpp	Tue Aug 22 14:11:28 2017 +0200
@@ -28,10 +28,11 @@
 #include <memory>
 #include <string>
 
+#include <boost/signals2/signal.hpp>
+
 #include <json.hpp>
 
 #include "net.hpp"
-#include "signals.hpp"
 #include "sysconfig.hpp"
 
 namespace irccd {
@@ -62,7 +63,7 @@
      * Arguments:
      *   - the command
      */
-    Signal<const nlohmann::json&> on_command;
+    boost::signals2::signal<void (const nlohmann::json&)> on_command;
 
     /**
      * Signal: on_die
@@ -70,7 +71,7 @@
      *
      * The client has disconnected.
      */
-    Signal<> on_die;
+    boost::signals2::signal<void ()> on_die;
 
 private:
     void error(const std::string& msg);