|  | // Copyright 2020 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  | library fuchsia.net.name; | 
|  |  | 
|  | /// Provides a hanging get interface to watch for DNS servers configuration. | 
|  | protocol DnsServerWatcher { | 
|  | /// Returns a list of DNS servers. | 
|  | /// | 
|  | /// First call always returns a snapshot of the current list of servers or blocks if an empty | 
|  | /// list would be returned. Subsequent calls will block until the list of servers changes. | 
|  | /// | 
|  | /// The list of servers changes over time by configuration or network topology changes, | 
|  | /// expiration, etc. Callers must repeatedly call `WatchServers` and replace any previously | 
|  | /// returned `servers` with new ones to avoid using stale or expired entries. | 
|  | /// | 
|  | /// It is invalid to call this method while a previous call is pending. Doing so will cause the | 
|  | /// server end of the protocol to be closed. | 
|  | /// | 
|  | /// - response `servers` The list of servers to use for DNS resolution, in priority order. | 
|  | WatchServers() -> (struct { | 
|  | servers vector<DnsServer>:MAX; | 
|  | }); | 
|  | }; |