diff options
author | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-16 17:13:11 +0000 |
---|---|---|
committer | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-16 17:13:11 +0000 |
commit | b4481b2296ce6035e52db00c8011cf20c165d7b6 (patch) | |
tree | 6a5b751c14fdc713b4ae76e407ac29c82d9f1df5 /net/dns/dns_config_service_win.h | |
parent | e1c39ae523ad5cce2f6d8d9e0dd177c2d5358676 (diff) | |
download | chromium_src-b4481b2296ce6035e52db00c8011cf20c165d7b6.zip chromium_src-b4481b2296ce6035e52db00c8011cf20c165d7b6.tar.gz chromium_src-b4481b2296ce6035e52db00c8011cf20c165d7b6.tar.bz2 |
[net/dns] Refactoring of DnsConfigService.
- Replaces Observer with Callback.
- The Callback is run within 100ms of any config change, not only on
successful read. It is also run on errors in watches (registry and
files). This allows HostResolverImpl to withdraw from using DnsTask
until DnsConfig is read successfully.
- Moves DnsHostsReader to dns_hosts.{h,cc}).
- Handles missing HOSTS files.
- Respects network adapter binding order in DnsConfigServiceWin.
- Adds NetLog source for DnsConfig-related events.
BUG=112856, 115460, 115494
TEST=./net_unittests --gtest_filter=DnsConfig*
Review URL: http://codereview.chromium.org/9597029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127190 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/dns/dns_config_service_win.h')
-rw-r--r-- | net/dns/dns_config_service_win.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/net/dns/dns_config_service_win.h b/net/dns/dns_config_service_win.h index d60ae04..3159f77 100644 --- a/net/dns/dns_config_service_win.h +++ b/net/dns/dns_config_service_win.h @@ -33,20 +33,27 @@ namespace net { -class WatchingFileReader; +class FilePathWatcherWrapper; + +// Use DnsConfigService::CreateSystemService to use it outside of tests. +namespace internal { class NET_EXPORT_PRIVATE DnsConfigServiceWin - : NON_EXPORTED_BASE(public DnsConfigService) { + : NON_EXPORTED_BASE(public DnsConfigService) { public: DnsConfigServiceWin(); virtual ~DnsConfigServiceWin(); - virtual void Watch() OVERRIDE; + virtual void Watch(const CallbackType& callback) OVERRIDE; private: class ConfigReader; + + void OnHostsChanged(bool succeeded); + scoped_refptr<ConfigReader> config_reader_; - scoped_ptr<WatchingFileReader> hosts_watcher_; + scoped_ptr<FilePathWatcherWrapper> hosts_watcher_; + scoped_refptr<SerialWorker> hosts_reader_; DISALLOW_COPY_AND_ASSIGN(DnsConfigServiceWin); }; @@ -73,7 +80,8 @@ struct NET_EXPORT_PRIVATE DnsSystemSettings { RegDword level; }; - // Filled in by GetAdapterAddresses. + // Filled in by GetAdapterAddresses. Note that the alternative + // GetNetworkParams does not include IPv6 addresses. scoped_ptr_malloc<IP_ADAPTER_ADDRESSES> addresses; // SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\SearchList @@ -105,6 +113,8 @@ bool NET_EXPORT_PRIVATE ParseSearchList(const string16& value, bool NET_EXPORT_PRIVATE ConvertSettingsToDnsConfig( const DnsSystemSettings& settings, DnsConfig* dns_config); +} // namespace internal + } // namespace net #endif // NET_DNS_DNS_CONFIG_SERVICE_WIN_H_ |