summaryrefslogtreecommitdiff
path: root/src/network/dns_socket_handler.cpp
blob: 5c286c48e12c92d165e5a8d677c24dfc661f386d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <biboumi.h>
#ifdef UDNS_FOUND

#include <network/dns_socket_handler.hpp>
#include <network/dns_handler.hpp>
#include <network/poller.hpp>

#include <udns.h>

DNSSocketHandler::DNSSocketHandler(std::shared_ptr<Poller>& poller,
                                   const socket_t socket):
  SocketHandler(poller, socket)
{
  poller->add_socket_handler(this);
}

DNSSocketHandler::~DNSSocketHandler()
{
  this->unwatch();
}

void DNSSocketHandler::on_recv()
{
  dns_ioevent(nullptr, 0);
}

bool DNSSocketHandler::is_connected() const
{
  return true;
}

void DNSSocketHandler::unwatch()
{
  if (this->poller->is_managing_socket(this->socket))
    this->poller->remove_socket_handler(this->socket);
}

void DNSSocketHandler::watch()
{
  this->poller->add_socket_handler(this);
}

#endif /* UDNS_FOUND */