OLD | NEW |
---|---|
(Empty) | |
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 #include "net/dns/dns_client.h" | |
6 | |
7 #include "base/bind.h" | |
8 #include "base/rand_util.h" | |
9 #include "net/base/net_log.h" | |
10 #include "net/dns/dns_config_service.h" | |
11 #include "net/dns/dns_session.h" | |
12 #include "net/dns/dns_transaction.h" | |
13 #include "net/socket/client_socket_factory.h" | |
14 | |
15 namespace net { | |
16 | |
17 namespace internal { | |
18 | |
19 class DnsClientImpl : public DnsClient { | |
20 public: | |
21 explicit DnsClientImpl(NetLog* net_log) : net_log_(net_log) {} | |
22 | |
23 virtual void SetConfig(const DnsConfig& config) OVERRIDE { | |
24 factory_.reset(); | |
25 session_.release(); | |
26 if (config.IsValid()) { | |
27 session_ = new DnsSession(config, | |
28 ClientSocketFactory::GetDefaultFactory(), | |
29 base::Bind(&base::RandInt), | |
30 net_log_); | |
31 factory_ = DnsTransactionFactory::CreateFactory(session_); | |
32 } | |
33 } | |
34 | |
35 virtual const DnsConfig* GetConfig() const OVERRIDE { | |
36 return session_.get() ? &session_->config() : NULL; | |
37 } | |
38 | |
39 virtual DnsTransactionFactory* GetTransactionFactory() OVERRIDE { | |
40 return factory_.get(); | |
41 } | |
42 | |
43 private: | |
44 scoped_refptr<DnsSession> session_; | |
45 scoped_ptr<DnsTransactionFactory> factory_; | |
46 | |
47 NetLog* net_log_; | |
48 }; | |
49 | |
50 } // namespace internal | |
mmenke
2012/03/12 16:23:31
An anonymous namespace would be better here. "int
| |
51 | |
52 // static | |
53 scoped_ptr<DnsClient> DnsClient::CreateClient(NetLog* net_log) { | |
54 return scoped_ptr<DnsClient>(new internal::DnsClientImpl(net_log)); | |
55 } | |
56 | |
57 } // namespace net | |
58 | |
59 | |
60 | |
OLD | NEW |