1// Copyright (c) 2012 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 5#ifndef NET_DNS_DNS_CLIENT_H_ 6#define NET_DNS_DNS_CLIENT_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "net/base/net_export.h" 10 11namespace net { 12 13class AddressSorter; 14struct DnsConfig; 15class DnsTransactionFactory; 16class NetLog; 17 18// Convenience wrapper which allows easy injection of DnsTransaction into 19// HostResolverImpl. Pointers returned by the Get* methods are only guaranteed 20// to remain valid until next time SetConfig is called. 21class NET_EXPORT DnsClient { 22 public: 23 virtual ~DnsClient() {} 24 25 // Destroys the current DnsTransactionFactory and creates a new one 26 // according to |config|, unless it is invalid or has |unhandled_options|. 27 virtual void SetConfig(const DnsConfig& config) = 0; 28 29 // Returns NULL if the current config is not valid. 30 virtual const DnsConfig* GetConfig() const = 0; 31 32 // Returns NULL if the current config is not valid. 33 virtual DnsTransactionFactory* GetTransactionFactory() = 0; 34 35 // Returns NULL if the current config is not valid. 36 virtual AddressSorter* GetAddressSorter() = 0; 37 38 // Creates default client. 39 static scoped_ptr<DnsClient> CreateClient(NetLog* net_log); 40}; 41 42} // namespace net 43 44#endif // NET_DNS_DNS_CLIENT_H_ 45 46