Doxygen with github
Loading...
Searching...
No Matches
ksDomainQuery.h
1/*
2 * Copyright (c) 2025, Krzysztof Strehlau
3 *
4 * This file is a part of the ksIotFramework library.
5 * All licensing information can be found inside LICENSE.md file.
6 *
7 * https://github.com/cziter15/ksIotFrameworkLib/blob/master/LICENSE
8 */
9
10#pragma once
11
12#include <Arduino.h>
13#include <IPAddress.h>
14#include <inttypes.h>
15#include <memory>
16
17#if (defined(ESP32) && ESP_ARDUINO_VERSION_MAJOR >= 3)
18 #define ksUdpClient_t NetworkUDP
19#else
20 #define ksUdpClient_t WiFiUDP
21#endif
22
23class ksUdpClient_t;
24
25namespace ksf::misc
26{
34 {
35 protected:
36 /* DNS server IP address. */
37 IPAddress serverIP;
38 /* UDP client. */
39 std::unique_ptr<ksUdpClient_t> udp;
40
41 /* Domain to resolve IP address for. */
42 std::string domain;
43 /* Resolved IP address. */
44 IPAddress resolvedIP;
45 /* Transaction ID (last). */
46 uint16_t transactionID{0};
47 /* Last query send time. */
48 uint32_t lastQuerySendTimeMs{0};
49
53 void sendQuery();
54
58 void receiveResponse();
59
60 public:
66
70 virtual ~ksDomainQuery();
71
76 ksDomainQuery(IPAddress dnsServer);
80 void invalidate();
81
86 void setDomain(std::string domain);
87
93 bool getResolvedIP(IPAddress& ip) const;
94
98 void process();
99 };
100}
Class for resolving domain names to IP addresses using DNS queries.
Definition ksDomainQuery.h:34
ksDomainQuery()
Default constructor. Uses KSF_DOMAIN_QUERY_DNS_SERVER as the DNS server.
Definition ksDomainQuery.cpp:31
void receiveResponse()
Receives DNS response from the DNS server.
Definition ksDomainQuery.cpp:117
void process()
Handles resolver tasks, such as sending queries and receiving responses.
Definition ksDomainQuery.cpp:183
void setDomain(std::string domain)
Sets the domain to resolve IP address for.
Definition ksDomainQuery.cpp:49
virtual ~ksDomainQuery()
Destructor.
bool getResolvedIP(IPAddress &ip) const
Retrieves the resolved IP address for the domain.
Definition ksDomainQuery.cpp:55
void invalidate()
Invalidates the resolved IP address and the last query send time. It will cause a new query to be sen...
Definition ksDomainQuery.cpp:43
void sendQuery()
Sends DNS query to the DNS server.
Definition ksDomainQuery.cpp:69