From 9714d02018904b0c207a3f4d7de0be1a6a22774b Mon Sep 17 00:00:00 2001
From: Florent Le Coz <louiz@louiz.org>
Date: Mon, 21 Dec 2015 21:15:03 +0100
Subject: Also store a reference instead of a pointer, in AdhocCommandsHandler

---
 src/xmpp/biboumi_adhoc_commands.cpp | 34 +++++++++++++++++-----------------
 src/xmpp/biboumi_adhoc_commands.hpp | 14 +++++++-------
 src/xmpp/biboumi_component.cpp      |  2 +-
 3 files changed, 25 insertions(+), 25 deletions(-)

(limited to 'src')

diff --git a/src/xmpp/biboumi_adhoc_commands.cpp b/src/xmpp/biboumi_adhoc_commands.cpp
index 84df2b3..f4a6bc8 100644
--- a/src/xmpp/biboumi_adhoc_commands.cpp
+++ b/src/xmpp/biboumi_adhoc_commands.cpp
@@ -17,9 +17,9 @@
 
 using namespace std::string_literals;
 
-void DisconnectUserStep1(XmppComponent* xmpp_component, AdhocSession&, XmlNode& command_node)
+void DisconnectUserStep1(XmppComponent& xmpp_component, AdhocSession&, XmlNode& command_node)
 {
-  auto biboumi_component = static_cast<BiboumiComponent*>(xmpp_component);
+  auto& biboumi_component = static_cast<BiboumiComponent&>(xmpp_component);
 
   XmlNode x("jabber:x:data:x");
   x["type"] = "form";
@@ -35,7 +35,7 @@ void DisconnectUserStep1(XmppComponent* xmpp_component, AdhocSession&, XmlNode&
   jids_field["label"] = "The JIDs to disconnect";
   XmlNode required("required");
   jids_field.add_child(std::move(required));
-  for (Bridge* bridge: biboumi_component->get_bridges())
+  for (Bridge* bridge: biboumi_component.get_bridges())
     {
       XmlNode option("option");
       option["label"] = bridge->get_jid();
@@ -57,9 +57,9 @@ void DisconnectUserStep1(XmppComponent* xmpp_component, AdhocSession&, XmlNode&
   command_node.add_child(std::move(x));
 }
 
-void DisconnectUserStep2(XmppComponent* xmpp_component, AdhocSession& session, XmlNode& command_node)
+void DisconnectUserStep2(XmppComponent& xmpp_component, AdhocSession& session, XmlNode& command_node)
 {
-  auto biboumi_component = static_cast<BiboumiComponent*>(xmpp_component);
+  auto& biboumi_component = static_cast<BiboumiComponent&>(xmpp_component);
 
   // Find out if the jids, and the quit message are provided in the form.
   std::string quit_message;
@@ -84,7 +84,7 @@ void DisconnectUserStep2(XmppComponent* xmpp_component, AdhocSession& session, X
           std::size_t num = 0;
           for (const XmlNode* value: jids_field->get_children("value", "jabber:x:data"))
             {
-              Bridge* bridge = biboumi_component->find_user_bridge(value->get_inner());
+              Bridge* bridge = biboumi_component.find_user_bridge(value->get_inner());
               if (bridge)
                 {
                   bridge->shutdown(quit_message);
@@ -114,7 +114,7 @@ void DisconnectUserStep2(XmppComponent* xmpp_component, AdhocSession& session, X
 }
 
 #ifdef USE_DATABASE
-void ConfigureIrcServerStep1(XmppComponent*, AdhocSession& session, XmlNode& command_node)
+void ConfigureIrcServerStep1(XmppComponent&, AdhocSession& session, XmlNode& command_node)
 {
   const Jid owner(session.get_owner_jid());
   const Jid target(session.get_target_jid());
@@ -236,7 +236,7 @@ void ConfigureIrcServerStep1(XmppComponent*, AdhocSession& session, XmlNode& com
   command_node.add_child(std::move(x));
 }
 
-void ConfigureIrcServerStep2(XmppComponent*, AdhocSession& session, XmlNode& command_node)
+void ConfigureIrcServerStep2(XmppComponent&, AdhocSession& session, XmlNode& command_node)
 {
   const XmlNode* x = command_node.get_child("x", "jabber:x:data");
   if (x)
@@ -314,7 +314,7 @@ void ConfigureIrcServerStep2(XmppComponent*, AdhocSession& session, XmlNode& com
 }
 #endif  // USE_DATABASE
 
-void DisconnectUserFromServerStep1(XmppComponent* xmpp_component, AdhocSession& session, XmlNode& command_node)
+void DisconnectUserFromServerStep1(XmppComponent& xmpp_component, AdhocSession& session, XmlNode& command_node)
 {
   const Jid owner(session.get_owner_jid());
   if (owner.bare() != Config::get("admin", ""))
@@ -325,7 +325,7 @@ void DisconnectUserFromServerStep1(XmppComponent* xmpp_component, AdhocSession&
     }
   else
     { // Send a form to select the user to disconnect
-      auto biboumi_component = static_cast<BiboumiComponent*>(xmpp_component);
+      auto& biboumi_component = static_cast<BiboumiComponent&>(xmpp_component);
 
       XmlNode x("jabber:x:data:x");
       x["type"] = "form";
@@ -341,7 +341,7 @@ void DisconnectUserFromServerStep1(XmppComponent* xmpp_component, AdhocSession&
       jids_field["label"] = "The JID to disconnect";
       XmlNode required("required");
       jids_field.add_child(std::move(required));
-      for (Bridge* bridge: biboumi_component->get_bridges())
+      for (Bridge* bridge: biboumi_component.get_bridges())
         {
           XmlNode option("option");
           option["label"] = bridge->get_jid();
@@ -355,7 +355,7 @@ void DisconnectUserFromServerStep1(XmppComponent* xmpp_component, AdhocSession&
     }
 }
 
-void DisconnectUserFromServerStep2(XmppComponent* xmpp_component, AdhocSession& session, XmlNode& command_node)
+void DisconnectUserFromServerStep2(XmppComponent& xmpp_component, AdhocSession& session, XmlNode& command_node)
 {
   // If no JID is contained in the command node, it means we skipped the
   // previous stage, and the jid to disconnect is the executor's jid
@@ -377,7 +377,7 @@ void DisconnectUserFromServerStep2(XmppComponent* xmpp_component, AdhocSession&
   // Send a data form to let the user choose which server to disconnect the
   // user from
   command_node.delete_all_children();
-  auto biboumi_component = static_cast<BiboumiComponent*>(xmpp_component);
+  auto& biboumi_component = static_cast<BiboumiComponent&>(xmpp_component);
 
   XmlNode x("jabber:x:data:x");
   x["type"] = "form";
@@ -393,7 +393,7 @@ void DisconnectUserFromServerStep2(XmppComponent* xmpp_component, AdhocSession&
   jids_field["label"] = "The servers to disconnect from";
   XmlNode required("required");
   jids_field.add_child(std::move(required));
-  Bridge* bridge = biboumi_component->find_user_bridge(jid_to_disconnect);
+  Bridge* bridge = biboumi_component.find_user_bridge(jid_to_disconnect);
 
   if (!bridge || bridge->get_irc_clients().empty())
     {
@@ -428,7 +428,7 @@ void DisconnectUserFromServerStep2(XmppComponent* xmpp_component, AdhocSession&
   command_node.add_child(std::move(x));
 }
 
-void DisconnectUserFromServerStep3(XmppComponent* xmpp_component, AdhocSession& session, XmlNode& command_node)
+void DisconnectUserFromServerStep3(XmppComponent& xmpp_component, AdhocSession& session, XmlNode& command_node)
 {
   const auto it = session.vars.find("jid");
   if (it == session.vars.end())
@@ -453,8 +453,8 @@ void DisconnectUserFromServerStep3(XmppComponent* xmpp_component, AdhocSession&
         }
     }
 
-  auto biboumi_component = static_cast<BiboumiComponent*>(xmpp_component);
-  Bridge* bridge = biboumi_component->find_user_bridge(jid_to_disconnect);
+  auto& biboumi_component = static_cast<BiboumiComponent&>(xmpp_component);
+  Bridge* bridge = biboumi_component.find_user_bridge(jid_to_disconnect);
   auto& clients = bridge->get_irc_clients();
 
   std::size_t number = 0;
diff --git a/src/xmpp/biboumi_adhoc_commands.hpp b/src/xmpp/biboumi_adhoc_commands.hpp
index 9377d13..1d30a27 100644
--- a/src/xmpp/biboumi_adhoc_commands.hpp
+++ b/src/xmpp/biboumi_adhoc_commands.hpp
@@ -7,14 +7,14 @@
 
 class XmppComponent;
 
-void DisconnectUserStep1(XmppComponent*, AdhocSession& session, XmlNode& command_node);
-void DisconnectUserStep2(XmppComponent*, AdhocSession& session, XmlNode& command_node);
+void DisconnectUserStep1(XmppComponent&, AdhocSession& session, XmlNode& command_node);
+void DisconnectUserStep2(XmppComponent&, AdhocSession& session, XmlNode& command_node);
 
-void ConfigureIrcServerStep1(XmppComponent*, AdhocSession& session, XmlNode& command_node);
-void ConfigureIrcServerStep2(XmppComponent*, AdhocSession& session, XmlNode& command_node);
+void ConfigureIrcServerStep1(XmppComponent&, AdhocSession& session, XmlNode& command_node);
+void ConfigureIrcServerStep2(XmppComponent&, AdhocSession& session, XmlNode& command_node);
 
-void DisconnectUserFromServerStep1(XmppComponent*, AdhocSession& session, XmlNode& command_node);
-void DisconnectUserFromServerStep2(XmppComponent*, AdhocSession& session, XmlNode& command_node);
-void DisconnectUserFromServerStep3(XmppComponent*, AdhocSession& session, XmlNode& command_node);
+void DisconnectUserFromServerStep1(XmppComponent&, AdhocSession& session, XmlNode& command_node);
+void DisconnectUserFromServerStep2(XmppComponent&, AdhocSession& session, XmlNode& command_node);
+void DisconnectUserFromServerStep3(XmppComponent&, AdhocSession& session, XmlNode& command_node);
 
 #endif /* BIBOUMI_ADHOC_COMMANDS_HPP_INCLUDED */
diff --git a/src/xmpp/biboumi_component.cpp b/src/xmpp/biboumi_component.cpp
index 9682dcb..e697fcd 100644
--- a/src/xmpp/biboumi_component.cpp
+++ b/src/xmpp/biboumi_component.cpp
@@ -43,7 +43,7 @@ static std::set<std::string> kickable_errors{
 
 BiboumiComponent::BiboumiComponent(std::shared_ptr<Poller> poller, const std::string& hostname, const std::string& secret):
   XmppComponent(poller, hostname, secret),
-  irc_server_adhoc_commands_handler(this)
+  irc_server_adhoc_commands_handler(*this)
 {
   this->stanza_handlers.emplace("presence",
                                 std::bind(&BiboumiComponent::handle_presence, this,std::placeholders::_1));
-- 
cgit v1.2.3