Revert "Don’t use unique_ptr to store dns socket handlers"

This reverts commit 5328d0806f.
This commit is contained in:
louiz’
2016-07-27 10:04:15 +02:00
parent c7e4fc1386
commit de0eff6e94
4 changed files with 13 additions and 13 deletions
+7 -7
View File
@@ -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(), std::remove_if(this->socket_handlers.begin(), this->socket_handlers.end(),
[&readers](const auto& dns_socket) [&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()); this->socket_handlers.end());
@@ -81,8 +81,8 @@ void DNSHandler::watch_dns_sockets(std::shared_ptr<Poller>& poller)
this->socket_handlers.end(), this->socket_handlers.end(),
[i](const auto& socket_handler) [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 (!read && !write) // No need to read or write to it
{ // If found, erase it and stop watching it because it is not { // If found, erase it and stop watching it because it is not
// needed anymore // needed anymore
@@ -95,12 +95,12 @@ void DNSHandler::watch_dns_sockets(std::shared_ptr<Poller>& poller)
if (it == this->socket_handlers.end()) if (it == this->socket_handlers.end())
{ {
this->socket_handlers.emplace(this->socket_handlers.begin(), this->socket_handlers.emplace(this->socket_handlers.begin(),
poller, i); std::make_unique<DNSSocketHandler>(poller, i));
it = this->socket_handlers.begin(); it = this->socket_handlers.begin();
} }
poller->add_socket_handler(&*it); poller->add_socket_handler(it->get());
if (write) if (write)
poller->watch_send_events(&*it); poller->watch_send_events(it->get());
} }
} }
// Cancel previous timer, if any. // Cancel previous timer, if any.
@@ -116,7 +116,7 @@ void DNSHandler::watch_dns_sockets(std::shared_ptr<Poller>& poller)
[this]() [this]()
{ {
for (auto& dns_socket_handler: this->socket_handlers) for (auto& dns_socket_handler: this->socket_handlers)
dns_socket_handler.on_recv(); dns_socket_handler->on_recv();
}, },
"DNS timeout")); "DNS timeout"));
} }
+1 -1
View File
@@ -50,7 +50,7 @@ private:
* call to ares_fds. DNSSocketHandlers are added to it or removed from it * call to ares_fds. DNSSocketHandlers are added to it or removed from it
* in the watch_dns_sockets() method * in the watch_dns_sockets() method
*/ */
std::vector<DNSSocketHandler> socket_handlers; std::vector<std::unique_ptr<DNSSocketHandler>> socket_handlers;
ares_channel channel; ares_channel channel;
}; };
+2 -2
View File
@@ -18,10 +18,10 @@ class DNSSocketHandler: public SocketHandler
public: public:
explicit DNSSocketHandler(std::shared_ptr<Poller> poller, const socket_t socket); explicit DNSSocketHandler(std::shared_ptr<Poller> poller, const socket_t socket);
~DNSSocketHandler() = default; ~DNSSocketHandler() = default;
DNSSocketHandler(DNSSocketHandler&&) = default;
DNSSocketHandler& operator=(DNSSocketHandler&&) = default;
DNSSocketHandler(const DNSSocketHandler&) = delete; DNSSocketHandler(const DNSSocketHandler&) = delete;
DNSSocketHandler(DNSSocketHandler&&) = delete;
DNSSocketHandler& operator=(const 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 * Just call dns_process_fd, c-ares will do its work of send()ing or
+3 -3
View File
@@ -15,10 +15,10 @@ public:
socket(socket) socket(socket)
{} {}
virtual ~SocketHandler() {} virtual ~SocketHandler() {}
SocketHandler& operator=(SocketHandler&&) = default;
SocketHandler(SocketHandler&&) = default;
SocketHandler& operator=(const SocketHandler&) = delete;
SocketHandler(const SocketHandler&) = delete; SocketHandler(const SocketHandler&) = delete;
SocketHandler(SocketHandler&&) = delete;
SocketHandler& operator=(const SocketHandler&) = delete;
SocketHandler& operator=(SocketHandler&&) = delete;
virtual void on_recv() = 0; virtual void on_recv() = 0;
virtual void on_send() = 0; virtual void on_send() = 0;