dns_config_change_manager.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef SERVICES_NETWORK_DNS_CONFIG_CHANGE_MANAGER_H_
  5. #define SERVICES_NETWORK_DNS_CONFIG_CHANGE_MANAGER_H_
  6. #include "base/component_export.h"
  7. #include "mojo/public/cpp/bindings/pending_remote.h"
  8. #include "mojo/public/cpp/bindings/receiver_set.h"
  9. #include "mojo/public/cpp/bindings/remote_set.h"
  10. #include "net/base/network_change_notifier.h"
  11. #include "services/network/public/mojom/host_resolver.mojom.h"
  12. namespace network {
  13. class COMPONENT_EXPORT(NETWORK_SERVICE) DnsConfigChangeManager
  14. : public mojom::DnsConfigChangeManager,
  15. public net::NetworkChangeNotifier::DNSObserver {
  16. public:
  17. DnsConfigChangeManager();
  18. DnsConfigChangeManager(const DnsConfigChangeManager&) = delete;
  19. DnsConfigChangeManager& operator=(const DnsConfigChangeManager&) = delete;
  20. ~DnsConfigChangeManager() override;
  21. void AddReceiver(
  22. mojo::PendingReceiver<mojom::DnsConfigChangeManager> receiver);
  23. // mojom::DnsConfigChangeManager implementation:
  24. void RequestNotifications(
  25. mojo::PendingRemote<mojom::DnsConfigChangeManagerClient> client) override;
  26. private:
  27. // net::NetworkChangeNotifier::DNSObserver implementation:
  28. void OnDNSChanged() override;
  29. mojo::ReceiverSet<mojom::DnsConfigChangeManager> receivers_;
  30. mojo::RemoteSet<mojom::DnsConfigChangeManagerClient> clients_;
  31. };
  32. } // namespace network
  33. #endif // SERVICES_NETWORK_DNS_CONFIG_CHANGE_MANAGER_H_