| Index: net/dns/async_host_resolver.h
|
| ===================================================================
|
| --- net/dns/async_host_resolver.h (revision 113383)
|
| +++ net/dns/async_host_resolver.h (working copy)
|
| @@ -8,8 +8,6 @@
|
|
|
| #include <list>
|
| #include <map>
|
| -#include <string>
|
| -#include <utility>
|
|
|
| #include "base/threading/non_thread_safe.h"
|
| #include "net/base/address_family.h"
|
| @@ -17,18 +15,24 @@
|
| #include "net/base/host_resolver.h"
|
| #include "net/base/ip_endpoint.h"
|
| #include "net/base/net_log.h"
|
| -#include "net/dns/dns_client.h"
|
| +#include "net/base/rand_callback.h"
|
| +#include "net/dns/dns_transaction.h"
|
|
|
| namespace net {
|
|
|
| +class ClientSocketFactory;
|
| +
|
| class NET_EXPORT AsyncHostResolver
|
| : public HostResolver,
|
| + public DnsTransaction::Delegate,
|
| NON_EXPORTED_BASE(public base::NonThreadSafe) {
|
| public:
|
| - AsyncHostResolver(size_t max_dns_requests,
|
| - size_t max_pending_requests,
|
| + AsyncHostResolver(const IPEndPoint& dns_server,
|
| + size_t max_transactions,
|
| + size_t max_pending_requests_,
|
| + const RandIntCallback& rand_int,
|
| HostCache* cache,
|
| - DnsClient* client,
|
| + ClientSocketFactory* factory,
|
| NetLog* net_log);
|
| virtual ~AsyncHostResolver();
|
|
|
| @@ -46,9 +50,11 @@
|
| virtual AddressFamily GetDefaultAddressFamily() const OVERRIDE;
|
| virtual HostCache* GetHostCache() OVERRIDE;
|
|
|
| - void OnDnsRequestComplete(DnsClient::Request* request,
|
| - int result,
|
| - const DnsResponse* transaction);
|
| + // DnsTransaction::Delegate interface
|
| + virtual void OnTransactionComplete(
|
| + int result,
|
| + const DnsTransaction* transaction,
|
| + const IPAddressList& ip_addresses) OVERRIDE;
|
|
|
| private:
|
| FRIEND_TEST_ALL_PREFIXES(AsyncHostResolverTest, QueuedLookup);
|
| @@ -62,9 +68,9 @@
|
|
|
| class Request;
|
|
|
| - typedef std::pair<std::string, uint16> Key;
|
| + typedef DnsTransaction::Key Key;
|
| typedef std::list<Request*> RequestList;
|
| - typedef std::list<const DnsClient::Request*> DnsRequestList;
|
| + typedef std::list<const DnsTransaction*> TransactionList;
|
| typedef std::map<Key, RequestList> KeyRequestListMap;
|
|
|
| // Create a new request for the incoming Resolve() call.
|
| @@ -86,9 +92,9 @@
|
| // attach |request| to the respective list.
|
| bool AttachToRequestList(Request* request);
|
|
|
| - // Will start a new DNS request for |request|, will insert a new key in
|
| + // Will start a new transaction for |request|, will insert a new key in
|
| // |requestlist_map_| and append |request| to the respective list.
|
| - int StartNewDnsRequestFor(Request* request);
|
| + int StartNewTransactionFor(Request* request);
|
|
|
| // Will enqueue |request| in |pending_requests_|.
|
| int Enqueue(Request* request);
|
| @@ -108,11 +114,11 @@
|
| // there are pending requests.
|
| void ProcessPending();
|
|
|
| - // Maximum number of concurrent DNS requests.
|
| - size_t max_dns_requests_;
|
| + // Maximum number of concurrent transactions.
|
| + size_t max_transactions_;
|
|
|
| - // List of current DNS requests.
|
| - DnsRequestList dns_requests_;
|
| + // List of current transactions.
|
| + TransactionList transactions_;
|
|
|
| // A map from Key to a list of requests waiting for the Key to resolve.
|
| KeyRequestListMap requestlist_map_;
|
| @@ -123,10 +129,18 @@
|
| // Queues based on priority for putting pending requests.
|
| RequestList pending_requests_[NUM_PRIORITIES];
|
|
|
| + // DNS server to which queries will be setn.
|
| + IPEndPoint dns_server_;
|
| +
|
| + // Callback to be passed to DnsTransaction for generating DNS query ids.
|
| + RandIntCallback rand_int_cb_;
|
| +
|
| // Cache of host resolution results.
|
| scoped_ptr<HostCache> cache_;
|
|
|
| - DnsClient* client_;
|
| + // Also passed to DnsTransaction; it's a dependency injection to aid
|
| + // testing, outside of unit tests, its value is always NULL.
|
| + ClientSocketFactory* factory_;
|
|
|
| NetLog* net_log_;
|
|
|
|
|