diff options
Diffstat (limited to 'chrome/utility/local_discovery/local_domain_resolver.h')
-rw-r--r-- | chrome/utility/local_discovery/local_domain_resolver.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/chrome/utility/local_discovery/local_domain_resolver.h b/chrome/utility/local_discovery/local_domain_resolver.h new file mode 100644 index 0000000..dc17e9d --- /dev/null +++ b/chrome/utility/local_discovery/local_domain_resolver.h @@ -0,0 +1,56 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <string> + +#include "base/callback.h" +#include "net/base/address_family.h" +#include "net/base/net_util.h" +#include "net/dns/mdns_client.h" + +#ifndef CHROME_UTILITY_LOCAL_DISCOVERY_LOCAL_DOMAIN_RESOLVER_H_ +#define CHROME_UTILITY_LOCAL_DISCOVERY_LOCAL_DOMAIN_RESOLVER_H_ + +namespace local_discovery { + +class LocalDomainResolver { + public: + typedef base::Callback<void(bool, const net::IPAddressNumber&)> + IPAddressCallback; + + // |mdns_client| must outlive the LocalDomainResolver. + LocalDomainResolver(net::MDnsClient* mdns_client, + const std::string& domain, + net::AddressFamily address_family, + const IPAddressCallback& callback); + ~LocalDomainResolver(); + + bool Start(); + + const std::string& domain() { return domain_; } + + private: + void OnTransactionComplete( + net::MDnsTransaction::Result result, + const net::RecordParsed* record); + + scoped_ptr<net::MDnsTransaction> CreateTransaction(uint16 type); + + std::string domain_; + net::AddressFamily address_family_; + IPAddressCallback callback_; + + scoped_ptr<net::MDnsTransaction> transaction_a_; + scoped_ptr<net::MDnsTransaction> transaction_aaaa_; + + int transaction_failures_; + + net::MDnsClient* mdns_client_; + + DISALLOW_COPY_AND_ASSIGN(LocalDomainResolver); +}; + +} // namespace local_discovery + +#endif // CHROME_UTILITY_LOCAL_DISCOVERY_LOCAL_DOMAIN_RESOLVER_H_ |