OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_BASE_HOST_RESOLVER_H_ | 5 #ifndef NET_BASE_HOST_RESOLVER_H_ |
6 #define NET_BASE_HOST_RESOLVER_H_ | 6 #define NET_BASE_HOST_RESOLVER_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/ref_counted.h" | 10 #include "base/ref_counted.h" |
11 #include "googleurl/src/gurl.h" | 11 #include "googleurl/src/gurl.h" |
12 #include "net/base/address_family.h" | 12 #include "net/base/address_family.h" |
13 #include "net/base/completion_callback.h" | 13 #include "net/base/completion_callback.h" |
14 #include "net/base/request_priority.h" | 14 #include "net/base/request_priority.h" |
15 | 15 |
16 class MessageLoop; | 16 class MessageLoop; |
17 | 17 |
18 namespace net { | 18 namespace net { |
19 | 19 |
20 class AddressList; | 20 class AddressList; |
| 21 class BoundNetLog; |
21 class HostCache; | 22 class HostCache; |
22 class HostResolverImpl; | 23 class HostResolverImpl; |
23 class LoadLog; | |
24 class NetworkChangeNotifier; | 24 class NetworkChangeNotifier; |
25 | 25 |
26 // This class represents the task of resolving hostnames (or IP address | 26 // This class represents the task of resolving hostnames (or IP address |
27 // literal) to an AddressList object. | 27 // literal) to an AddressList object. |
28 // | 28 // |
29 // HostResolver can handle multiple requests at a time, so when cancelling a | 29 // HostResolver can handle multiple requests at a time, so when cancelling a |
30 // request the RequestHandle that was returned by Resolve() needs to be | 30 // request the RequestHandle that was returned by Resolve() needs to be |
31 // given. A simpler alternative for consumers that only have 1 outstanding | 31 // given. A simpler alternative for consumers that only have 1 outstanding |
32 // request at a time is to create a SingleRequestHostResolver wrapper around | 32 // request at a time is to create a SingleRequestHostResolver wrapper around |
33 // HostResolver (which will automatically cancel the single request when it | 33 // HostResolver (which will automatically cancel the single request when it |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 // | 130 // |
131 // When callback is non-null, the operation may be performed asynchronously. | 131 // When callback is non-null, the operation may be performed asynchronously. |
132 // If the operation cannnot be completed synchronously, ERR_IO_PENDING will | 132 // If the operation cannnot be completed synchronously, ERR_IO_PENDING will |
133 // be returned and the real result code will be passed to the completion | 133 // be returned and the real result code will be passed to the completion |
134 // callback. Otherwise the result code is returned immediately from this | 134 // callback. Otherwise the result code is returned immediately from this |
135 // call. | 135 // call. |
136 // If |out_req| is non-NULL, then |*out_req| will be filled with a handle to | 136 // If |out_req| is non-NULL, then |*out_req| will be filled with a handle to |
137 // the async request. This handle is not valid after the request has | 137 // the async request. This handle is not valid after the request has |
138 // completed. | 138 // completed. |
139 // | 139 // |
140 // Profiling information for the request is saved to |load_log| if non-NULL. | 140 // Profiling information for the request is saved to |net_log| if non-NULL. |
141 virtual int Resolve(const RequestInfo& info, | 141 virtual int Resolve(const RequestInfo& info, |
142 AddressList* addresses, | 142 AddressList* addresses, |
143 CompletionCallback* callback, | 143 CompletionCallback* callback, |
144 RequestHandle* out_req, | 144 RequestHandle* out_req, |
145 LoadLog* load_log) = 0; | 145 const BoundNetLog& net_log) = 0; |
146 | 146 |
147 // Cancels the specified request. |req| is the handle returned by Resolve(). | 147 // Cancels the specified request. |req| is the handle returned by Resolve(). |
148 // After a request is cancelled, its completion callback will not be called. | 148 // After a request is cancelled, its completion callback will not be called. |
149 virtual void CancelRequest(RequestHandle req) = 0; | 149 virtual void CancelRequest(RequestHandle req) = 0; |
150 | 150 |
151 // Adds an observer to this resolver. The observer will be notified of the | 151 // Adds an observer to this resolver. The observer will be notified of the |
152 // start and completion of all requests (excluding cancellation). |observer| | 152 // start and completion of all requests (excluding cancellation). |observer| |
153 // must remain valid for the duration of this HostResolver's lifetime. | 153 // must remain valid for the duration of this HostResolver's lifetime. |
154 virtual void AddObserver(Observer* observer) = 0; | 154 virtual void AddObserver(Observer* observer) = 0; |
155 | 155 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 // If a completion callback is pending when the resolver is destroyed, the | 191 // If a completion callback is pending when the resolver is destroyed, the |
192 // host resolution is cancelled, and the completion callback will not be | 192 // host resolution is cancelled, and the completion callback will not be |
193 // called. | 193 // called. |
194 ~SingleRequestHostResolver(); | 194 ~SingleRequestHostResolver(); |
195 | 195 |
196 // Resolves the given hostname (or IP address literal), filling out the | 196 // Resolves the given hostname (or IP address literal), filling out the |
197 // |addresses| object upon success. See HostResolver::Resolve() for details. | 197 // |addresses| object upon success. See HostResolver::Resolve() for details. |
198 int Resolve(const HostResolver::RequestInfo& info, | 198 int Resolve(const HostResolver::RequestInfo& info, |
199 AddressList* addresses, | 199 AddressList* addresses, |
200 CompletionCallback* callback, | 200 CompletionCallback* callback, |
201 LoadLog* load_log); | 201 const BoundNetLog& net_log); |
202 | 202 |
203 // Cancels the in-progress request, if any. This prevents the callback | 203 // Cancels the in-progress request, if any. This prevents the callback |
204 // from being invoked. Resolve() can be called again after cancelling. | 204 // from being invoked. Resolve() can be called again after cancelling. |
205 void Cancel(); | 205 void Cancel(); |
206 | 206 |
207 private: | 207 private: |
208 // Callback for when the request to |resolver_| completes, so we dispatch | 208 // Callback for when the request to |resolver_| completes, so we dispatch |
209 // to the user's callback. | 209 // to the user's callback. |
210 void OnResolveCompletion(int result); | 210 void OnResolveCompletion(int result); |
211 | 211 |
(...skipping 14 matching lines...) Expand all Loading... |
226 // (Except if a unit-test has changed the global HostResolverProc using | 226 // (Except if a unit-test has changed the global HostResolverProc using |
227 // ScopedHostResolverProc to intercept requests to the system). | 227 // ScopedHostResolverProc to intercept requests to the system). |
228 // |network_change_notifier| must outlive HostResolver. It can optionally be | 228 // |network_change_notifier| must outlive HostResolver. It can optionally be |
229 // NULL, in which case HostResolver will not respond to network changes. | 229 // NULL, in which case HostResolver will not respond to network changes. |
230 HostResolver* CreateSystemHostResolver( | 230 HostResolver* CreateSystemHostResolver( |
231 NetworkChangeNotifier* network_change_notifier); | 231 NetworkChangeNotifier* network_change_notifier); |
232 | 232 |
233 } // namespace net | 233 } // namespace net |
234 | 234 |
235 #endif // NET_BASE_HOST_RESOLVER_H_ | 235 #endif // NET_BASE_HOST_RESOLVER_H_ |
OLD | NEW |