summaryrefslogtreecommitdiffstats
path: root/chrome/utility/local_discovery/local_domain_resolver.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/utility/local_discovery/local_domain_resolver.h')
-rw-r--r--chrome/utility/local_discovery/local_domain_resolver.h56
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_