host_resolver_mdns_listener.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright 2019 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_HOST_RESOLVER_MDNS_LISTENER_H_
  5. #define SERVICES_NETWORK_HOST_RESOLVER_MDNS_LISTENER_H_
  6. #include <memory>
  7. #include <string>
  8. #include <vector>
  9. #include "base/callback_forward.h"
  10. #include "mojo/public/cpp/bindings/pending_remote.h"
  11. #include "mojo/public/cpp/bindings/remote.h"
  12. #include "net/base/ip_endpoint.h"
  13. #include "net/dns/host_resolver.h"
  14. #include "net/dns/public/dns_query_type.h"
  15. #include "net/dns/public/mdns_listener_update_type.h"
  16. #include "services/network/public/mojom/host_resolver.mojom.h"
  17. namespace net {
  18. class HostPortPair;
  19. } // namespace net
  20. namespace network {
  21. class HostResolverMdnsListener
  22. : public net::HostResolver::MdnsListener::Delegate {
  23. public:
  24. HostResolverMdnsListener(net::HostResolver* resolver,
  25. const net::HostPortPair& host,
  26. net::DnsQueryType query_type);
  27. HostResolverMdnsListener(const HostResolverMdnsListener&) = delete;
  28. HostResolverMdnsListener& operator=(const HostResolverMdnsListener&) = delete;
  29. ~HostResolverMdnsListener() override;
  30. int Start(mojo::PendingRemote<mojom::MdnsListenClient> response_client,
  31. base::OnceClosure cancellation_callback);
  32. // net::HostResolver::MdnsListenerDelegate implementation
  33. void OnAddressResult(net::MdnsListenerUpdateType update_type,
  34. net::DnsQueryType query_type,
  35. net::IPEndPoint address) override;
  36. void OnTextResult(net::MdnsListenerUpdateType update_type,
  37. net::DnsQueryType query_type,
  38. std::vector<std::string> text_records) override;
  39. void OnHostnameResult(net::MdnsListenerUpdateType update_type,
  40. net::DnsQueryType query_type,
  41. net::HostPortPair host) override;
  42. void OnUnhandledResult(net::MdnsListenerUpdateType update_type,
  43. net::DnsQueryType query_type) override;
  44. private:
  45. void OnConnectionError();
  46. std::unique_ptr<net::HostResolver::MdnsListener> internal_listener_;
  47. mojo::Remote<mojom::MdnsListenClient> response_client_;
  48. base::OnceClosure cancellation_callback_;
  49. };
  50. } // namespace network
  51. #endif // SERVICES_NETWORK_HOST_RESOLVER_MDNS_LISTENER_H_