ladybird/Userland/Services/LookupServer/LookupServer.h
Tom 49de4d5f33 LibDNS: Remove the 'DNS' prefix from the various type and class names
Since all types and class names live in the DNS namespace, we don't
need to spell it out twice each time.
2022-04-15 16:34:26 +01:00

47 lines
1.2 KiB
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include "ConnectionFromClient.h"
#include "DNSServer.h"
#include "MulticastDNS.h"
#include <LibCore/FileWatcher.h>
#include <LibCore/Object.h>
#include <LibDNS/Name.h>
#include <LibDNS/Packet.h>
#include <LibIPC/MultiServer.h>
namespace LookupServer {
using namespace DNS;
class LookupServer final : public Core::Object {
C_OBJECT(LookupServer);
public:
static LookupServer& the();
ErrorOr<Vector<Answer>> lookup(Name const& name, RecordType record_type);
private:
LookupServer();
void load_etc_hosts();
void put_in_cache(Answer const&);
ErrorOr<Vector<Answer>> lookup(Name const& hostname, String const& nameserver, bool& did_get_response, RecordType record_type, ShouldRandomizeCase = ShouldRandomizeCase::Yes);
OwnPtr<IPC::MultiServer<ConnectionFromClient>> m_server;
RefPtr<DNSServer> m_dns_server;
RefPtr<MulticastDNS> m_mdns;
Vector<String> m_nameservers;
RefPtr<Core::FileWatcher> m_file_watcher;
HashMap<Name, Vector<Answer>, Name::Traits> m_etc_hosts;
HashMap<Name, Vector<Answer>, Name::Traits> m_lookup_cache;
};
}