From 5328d0806fdc5becb9344b4d4320787a2b7c0712 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?louiz=E2=80=99?= <louiz@louiz.org>
Date: Thu, 7 Jul 2016 09:27:22 +0200
Subject: =?UTF-8?q?Don=E2=80=99t=20use=20unique=5Fptr=20to=20store=20dns?=
 =?UTF-8?q?=20socket=20handlers?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 louloulibs/network/dns_handler.cpp        | 14 +++++++-------
 louloulibs/network/dns_handler.hpp        |  2 +-
 louloulibs/network/dns_socket_handler.hpp |  6 +++---
 louloulibs/network/socket_handler.hpp     |  6 +++---
 4 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/louloulibs/network/dns_handler.cpp b/louloulibs/network/dns_handler.cpp
index 5e19f8c..24c4bcf 100644
--- a/louloulibs/network/dns_handler.cpp
+++ b/louloulibs/network/dns_handler.cpp
@@ -68,7 +68,7 @@ void DNSHandler::watch_dns_sockets(std::shared_ptr<Poller>& poller)
       std::remove_if(this->socket_handlers.begin(), this->socket_handlers.end(),
                      [&readers](const auto& dns_socket)
                      {
-                       return !FD_ISSET(dns_socket->get_socket(), &readers);
+                       return !FD_ISSET(dns_socket.get_socket(), &readers);
                      }),
       this->socket_handlers.end());
 
@@ -81,8 +81,8 @@ void DNSHandler::watch_dns_sockets(std::shared_ptr<Poller>& poller)
                              this->socket_handlers.end(),
                              [i](const auto& socket_handler)
                              {
-        return i == socket_handler->get_socket();
-      });
+                                 return i == socket_handler.get_socket();
+                             });
       if (!read && !write)      // No need to read or write to it
         { // If found, erase it and stop watching it because it is not
           // needed anymore
@@ -95,12 +95,12 @@ void DNSHandler::watch_dns_sockets(std::shared_ptr<Poller>& poller)
           if (it == this->socket_handlers.end())
             {
               this->socket_handlers.emplace(this->socket_handlers.begin(),
-                                            std::make_unique<DNSSocketHandler>(poller, i));
+                                            poller, i);
               it = this->socket_handlers.begin();
             }
-          poller->add_socket_handler(it->get());
+          poller->add_socket_handler(&*it);
           if (write)
-            poller->watch_send_events(it->get());
+            poller->watch_send_events(&*it);
         }
     }
   // Cancel previous timer, if any.
@@ -116,7 +116,7 @@ void DNSHandler::watch_dns_sockets(std::shared_ptr<Poller>& poller)
                                                           [this]()
              {
                for (auto& dns_socket_handler: this->socket_handlers)
-                 dns_socket_handler->on_recv();
+                 dns_socket_handler.on_recv();
              },
                                                           "DNS timeout"));
     }
diff --git a/louloulibs/network/dns_handler.hpp b/louloulibs/network/dns_handler.hpp
index e0feb11..d8b55c8 100644
--- a/louloulibs/network/dns_handler.hpp
+++ b/louloulibs/network/dns_handler.hpp
@@ -50,7 +50,7 @@ private:
    * call to ares_fds.  DNSSocketHandlers are added to it or removed from it
    * in the watch_dns_sockets() method
    */
-  std::vector<std::unique_ptr<DNSSocketHandler>> socket_handlers;
+  std::vector<DNSSocketHandler> socket_handlers;
   ares_channel channel;
 };
 
diff --git a/louloulibs/network/dns_socket_handler.hpp b/louloulibs/network/dns_socket_handler.hpp
index dba2f26..21ae4e1 100644
--- a/louloulibs/network/dns_socket_handler.hpp
+++ b/louloulibs/network/dns_socket_handler.hpp
@@ -17,11 +17,11 @@ class DNSSocketHandler: public SocketHandler
 {
 public:
   explicit DNSSocketHandler(std::shared_ptr<Poller> poller, const socket_t socket);
-  ~DNSSocketHandler() = default;
+  ~DNSSocketHandler();
+  DNSSocketHandler(DNSSocketHandler&&) = default;
+  DNSSocketHandler& operator=(DNSSocketHandler&&) = default;
   DNSSocketHandler(const DNSSocketHandler&) = delete;
-  DNSSocketHandler(DNSSocketHandler&&) = delete;
   DNSSocketHandler& operator=(const DNSSocketHandler&) = delete;
-  DNSSocketHandler& operator=(DNSSocketHandler&&) = delete;
 
   /**
    * Just call dns_process_fd, c-ares will do its work of send()ing or
diff --git a/louloulibs/network/socket_handler.hpp b/louloulibs/network/socket_handler.hpp
index eeb41fe..869ac3b 100644
--- a/louloulibs/network/socket_handler.hpp
+++ b/louloulibs/network/socket_handler.hpp
@@ -15,10 +15,10 @@ public:
     socket(socket)
   {}
   virtual ~SocketHandler() {}
-  SocketHandler(const SocketHandler&) = delete;
-  SocketHandler(SocketHandler&&) = delete;
+  SocketHandler& operator=(SocketHandler&&) = default;
+  SocketHandler(SocketHandler&&) = default;
   SocketHandler& operator=(const SocketHandler&) = delete;
-  SocketHandler& operator=(SocketHandler&&) = delete;
+  SocketHandler(const SocketHandler&) = delete;
 
   virtual void on_recv() = 0;
   virtual void on_send() = 0;
-- 
cgit v1.2.3