// Copyright (c) 2012 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.

#ifndef NET_DNS_DNS_CLIENT_H_
#define NET_DNS_DNS_CLIENT_H_

#include "base/memory/scoped_ptr.h"
#include "net/base/net_export.h"

namespace net {

class AddressSorter;
struct DnsConfig;
class DnsTransactionFactory;
class NetLog;

// Convenience wrapper which allows easy injection of DnsTransaction into
// HostResolverImpl. Pointers returned by the Get* methods are only guaranteed
// to remain valid until next time SetConfig is called.
class NET_EXPORT DnsClient {
 public:
  virtual ~DnsClient() {}

  // Creates a new DnsTransactionFactory according to the new |config|.
  virtual void SetConfig(const DnsConfig& config) = 0;

  // Returns NULL if the current config is not valid.
  virtual const DnsConfig* GetConfig() const = 0;

  // Returns NULL if the current config is not valid.
  virtual DnsTransactionFactory* GetTransactionFactory() = 0;

  // Returns NULL if the current config is not valid.
  virtual AddressSorter* GetAddressSorter() = 0;

  // Creates default client.
  static scoped_ptr<DnsClient> CreateClient(NetLog* net_log);
};

}  // namespace net

#endif  // NET_DNS_DNS_CLIENT_H_

