OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 library host_resolver_mojom; | 5 library host_resolver_mojom; |
6 import 'dart:async'; | 6 import 'dart:async'; |
7 import 'package:mojo/bindings.dart' as bindings; | 7 import 'package:mojo/bindings.dart' as bindings; |
8 import 'package:mojo/core.dart' as core; | 8 import 'package:mojo/core.dart' as core; |
9 import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart' as servic
e_describer; | 9 import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart' as servic
e_describer; |
10 import 'package:mojo/mojo/network_error.mojom.dart' as network_error_mojom; | 10 import 'package:mojo/mojo/network_error.mojom.dart' as network_error_mojom; |
11 import 'package:mojo_services/mojo/net_address.mojom.dart' as net_address_mojom; | 11 import 'package:mojo_services/mojo/net_address.mojom.dart' as net_address_mojom; |
12 | 12 |
13 | 13 |
14 | 14 |
15 class _HostResolverGetHostAddressesParams extends bindings.Struct { | 15 class _HostResolverGetHostAddressesParams extends bindings.Struct { |
16 static const List<bindings.StructDataHeader> kVersions = const [ | 16 static const List<bindings.StructDataHeader> kVersions = const [ |
17 const bindings.StructDataHeader(24, 0) | 17 const bindings.StructDataHeader(24, 0) |
18 ]; | 18 ]; |
19 String host = null; | 19 String host = null; |
20 net_address_mojom.NetAddressFamily family = null; | 20 net_address_mojom.NetAddressFamily family = null; |
21 | 21 |
22 _HostResolverGetHostAddressesParams() : super(kVersions.last.size); | 22 _HostResolverGetHostAddressesParams() : super(kVersions.last.size); |
23 | 23 |
| 24 _HostResolverGetHostAddressesParams.init( |
| 25 String this.host, |
| 26 net_address_mojom.NetAddressFamily this.family |
| 27 ) : super(kVersions.last.size); |
| 28 |
24 static _HostResolverGetHostAddressesParams deserialize(bindings.Message messag
e) { | 29 static _HostResolverGetHostAddressesParams deserialize(bindings.Message messag
e) { |
25 var decoder = new bindings.Decoder(message); | 30 var decoder = new bindings.Decoder(message); |
26 var result = decode(decoder); | 31 var result = decode(decoder); |
27 if (decoder.excessHandles != null) { | 32 if (decoder.excessHandles != null) { |
28 decoder.excessHandles.forEach((h) => h.close()); | 33 decoder.excessHandles.forEach((h) => h.close()); |
29 } | 34 } |
30 return result; | 35 return result; |
31 } | 36 } |
32 | 37 |
33 static _HostResolverGetHostAddressesParams decode(bindings.Decoder decoder0) { | 38 static _HostResolverGetHostAddressesParams decode(bindings.Decoder decoder0) { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 | 109 |
105 class HostResolverGetHostAddressesResponseParams extends bindings.Struct { | 110 class HostResolverGetHostAddressesResponseParams extends bindings.Struct { |
106 static const List<bindings.StructDataHeader> kVersions = const [ | 111 static const List<bindings.StructDataHeader> kVersions = const [ |
107 const bindings.StructDataHeader(24, 0) | 112 const bindings.StructDataHeader(24, 0) |
108 ]; | 113 ]; |
109 network_error_mojom.NetworkError result = null; | 114 network_error_mojom.NetworkError result = null; |
110 List<net_address_mojom.NetAddress> addresses = null; | 115 List<net_address_mojom.NetAddress> addresses = null; |
111 | 116 |
112 HostResolverGetHostAddressesResponseParams() : super(kVersions.last.size); | 117 HostResolverGetHostAddressesResponseParams() : super(kVersions.last.size); |
113 | 118 |
| 119 HostResolverGetHostAddressesResponseParams.init( |
| 120 network_error_mojom.NetworkError this.result, |
| 121 List<net_address_mojom.NetAddress> this.addresses |
| 122 ) : super(kVersions.last.size); |
| 123 |
114 static HostResolverGetHostAddressesResponseParams deserialize(bindings.Message
message) { | 124 static HostResolverGetHostAddressesResponseParams deserialize(bindings.Message
message) { |
115 var decoder = new bindings.Decoder(message); | 125 var decoder = new bindings.Decoder(message); |
116 var result = decode(decoder); | 126 var result = decode(decoder); |
117 if (decoder.excessHandles != null) { | 127 if (decoder.excessHandles != null) { |
118 decoder.excessHandles.forEach((h) => h.close()); | 128 decoder.excessHandles.forEach((h) => h.close()); |
119 } | 129 } |
120 return result; | 130 return result; |
121 } | 131 } |
122 | 132 |
123 static HostResolverGetHostAddressesResponseParams decode(bindings.Decoder deco
der0) { | 133 static HostResolverGetHostAddressesResponseParams decode(bindings.Decoder deco
der0) { |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 Map map = new Map(); | 212 Map map = new Map(); |
203 map["result"] = result; | 213 map["result"] = result; |
204 map["addresses"] = addresses; | 214 map["addresses"] = addresses; |
205 return map; | 215 return map; |
206 } | 216 } |
207 } | 217 } |
208 | 218 |
209 const int _hostResolverMethodGetHostAddressesName = 0; | 219 const int _hostResolverMethodGetHostAddressesName = 0; |
210 | 220 |
211 class _HostResolverServiceDescription implements service_describer.ServiceDescri
ption { | 221 class _HostResolverServiceDescription implements service_describer.ServiceDescri
ption { |
212 dynamic getTopLevelInterface([Function responseFactory]) => | 222 void getTopLevelInterface(Function responder) { |
213 responseFactory(null); | 223 responder(null); |
| 224 } |
214 | 225 |
215 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => | 226 void getTypeDefinition(String typeKey, Function responder) { |
216 responseFactory(null); | 227 responder(null); |
| 228 } |
217 | 229 |
218 dynamic getAllTypeDefinitions([Function responseFactory]) => | 230 void getAllTypeDefinitions(Function responder) { |
219 responseFactory(null); | 231 responder(null); |
| 232 } |
220 } | 233 } |
221 | 234 |
222 abstract class HostResolver { | 235 abstract class HostResolver { |
223 static const String serviceName = null; | 236 static const String serviceName = null; |
224 | 237 |
225 static service_describer.ServiceDescription _cachedServiceDescription; | 238 static service_describer.ServiceDescription _cachedServiceDescription; |
226 static service_describer.ServiceDescription get serviceDescription { | 239 static service_describer.ServiceDescription get serviceDescription { |
227 if (_cachedServiceDescription == null) { | 240 if (_cachedServiceDescription == null) { |
228 _cachedServiceDescription = new _HostResolverServiceDescription(); | 241 _cachedServiceDescription = new _HostResolverServiceDescription(); |
229 } | 242 } |
230 return _cachedServiceDescription; | 243 return _cachedServiceDescription; |
231 } | 244 } |
232 | 245 |
233 static HostResolverProxy connectToService( | 246 static HostResolverProxy connectToService( |
234 bindings.ServiceConnector s, String url, [String serviceName]) { | 247 bindings.ServiceConnector s, String url, [String serviceName]) { |
235 HostResolverProxy p = new HostResolverProxy.unbound(); | 248 HostResolverProxy p = new HostResolverProxy.unbound(); |
236 String name = serviceName ?? HostResolver.serviceName; | 249 String name = serviceName ?? HostResolver.serviceName; |
237 if ((name == null) || name.isEmpty) { | 250 if ((name == null) || name.isEmpty) { |
238 throw new core.MojoApiError( | 251 throw new core.MojoApiError( |
239 "If an interface has no ServiceName, then one must be provided."); | 252 "If an interface has no ServiceName, then one must be provided."); |
240 } | 253 } |
241 s.connectToService(url, p, name); | 254 s.connectToService(url, p, name); |
242 return p; | 255 return p; |
243 } | 256 } |
244 dynamic getHostAddresses(String host,net_address_mojom.NetAddressFamily family
,[Function responseFactory = null]); | 257 void getHostAddresses(String host,net_address_mojom.NetAddressFamily family,vo
id callback(network_error_mojom.NetworkError result, List<net_address_mojom.NetA
ddress> addresses)); |
245 } | 258 } |
246 | 259 |
247 abstract class HostResolverInterface | 260 abstract class HostResolverInterface |
248 implements bindings.MojoInterface<HostResolver>, | 261 implements bindings.MojoInterface<HostResolver>, |
249 HostResolver { | 262 HostResolver { |
250 factory HostResolverInterface([HostResolver impl]) => | 263 factory HostResolverInterface([HostResolver impl]) => |
251 new HostResolverStub.unbound(impl); | 264 new HostResolverStub.unbound(impl); |
252 | 265 |
253 factory HostResolverInterface.fromEndpoint( | 266 factory HostResolverInterface.fromEndpoint( |
254 core.MojoMessagePipeEndpoint endpoint, | 267 core.MojoMessagePipeEndpoint endpoint, |
(...skipping 29 matching lines...) Expand all Loading... |
284 | 297 |
285 void handleResponse(bindings.ServiceMessage message) { | 298 void handleResponse(bindings.ServiceMessage message) { |
286 switch (message.header.type) { | 299 switch (message.header.type) { |
287 case _hostResolverMethodGetHostAddressesName: | 300 case _hostResolverMethodGetHostAddressesName: |
288 var r = HostResolverGetHostAddressesResponseParams.deserialize( | 301 var r = HostResolverGetHostAddressesResponseParams.deserialize( |
289 message.payload); | 302 message.payload); |
290 if (!message.header.hasRequestId) { | 303 if (!message.header.hasRequestId) { |
291 proxyError("Expected a message with a valid request Id."); | 304 proxyError("Expected a message with a valid request Id."); |
292 return; | 305 return; |
293 } | 306 } |
294 Completer c = completerMap[message.header.requestId]; | 307 Function callback = callbackMap[message.header.requestId]; |
295 if (c == null) { | 308 if (callback == null) { |
296 proxyError( | 309 proxyError( |
297 "Message had unknown request Id: ${message.header.requestId}"); | 310 "Message had unknown request Id: ${message.header.requestId}"); |
298 return; | 311 return; |
299 } | 312 } |
300 completerMap.remove(message.header.requestId); | 313 callbackMap.remove(message.header.requestId); |
301 if (c.isCompleted) { | 314 callback(r.result , r.addresses ); |
302 proxyError("Response completer already completed"); | |
303 return; | |
304 } | |
305 c.complete(r); | |
306 break; | 315 break; |
307 default: | 316 default: |
308 proxyError("Unexpected message type: ${message.header.type}"); | 317 proxyError("Unexpected message type: ${message.header.type}"); |
309 close(immediate: true); | 318 close(immediate: true); |
310 break; | 319 break; |
311 } | 320 } |
312 } | 321 } |
313 | 322 |
314 @override | 323 @override |
315 String toString() { | 324 String toString() { |
(...skipping 24 matching lines...) Expand all Loading... |
340 return newMockedProxy; | 349 return newMockedProxy; |
341 } | 350 } |
342 | 351 |
343 static HostResolverProxy newFromEndpoint( | 352 static HostResolverProxy newFromEndpoint( |
344 core.MojoMessagePipeEndpoint endpoint) { | 353 core.MojoMessagePipeEndpoint endpoint) { |
345 assert(endpoint.setDescription("For HostResolverProxy")); | 354 assert(endpoint.setDescription("For HostResolverProxy")); |
346 return new HostResolverProxy.fromEndpoint(endpoint); | 355 return new HostResolverProxy.fromEndpoint(endpoint); |
347 } | 356 } |
348 | 357 |
349 | 358 |
350 dynamic getHostAddresses(String host,net_address_mojom.NetAddressFamily family
,[Function responseFactory = null]) { | 359 void getHostAddresses(String host,net_address_mojom.NetAddressFamily family,vo
id callback(network_error_mojom.NetworkError result, List<net_address_mojom.NetA
ddress> addresses)) { |
351 if (impl != null) { | 360 if (impl != null) { |
352 return new Future(() => impl.getHostAddresses(host,family,_HostResolverStu
bControl._hostResolverGetHostAddressesResponseParamsFactory)); | 361 impl.getHostAddresses(host,family,callback); |
| 362 return; |
353 } | 363 } |
354 var params = new _HostResolverGetHostAddressesParams(); | 364 var params = new _HostResolverGetHostAddressesParams(); |
355 params.host = host; | 365 params.host = host; |
356 params.family = family; | 366 params.family = family; |
357 return ctrl.sendMessageWithRequestId( | 367 ctrl.sendMessageWithRequestId( |
358 params, | 368 params, |
359 _hostResolverMethodGetHostAddressesName, | 369 _hostResolverMethodGetHostAddressesName, |
360 -1, | 370 -1, |
361 bindings.MessageHeader.kMessageExpectsResponse); | 371 bindings.MessageHeader.kMessageExpectsResponse, |
| 372 callback); |
362 } | 373 } |
363 } | 374 } |
364 | 375 |
365 class _HostResolverStubControl | 376 class _HostResolverStubControl |
366 extends bindings.StubMessageHandler | 377 extends bindings.StubMessageHandler |
367 implements bindings.StubControl<HostResolver> { | 378 implements bindings.StubControl<HostResolver> { |
368 HostResolver _impl; | 379 HostResolver _impl; |
369 | 380 |
370 _HostResolverStubControl.fromEndpoint( | 381 _HostResolverStubControl.fromEndpoint( |
371 core.MojoMessagePipeEndpoint endpoint, [HostResolver impl]) | 382 core.MojoMessagePipeEndpoint endpoint, [HostResolver impl]) |
372 : super.fromEndpoint(endpoint, autoBegin: impl != null) { | 383 : super.fromEndpoint(endpoint, autoBegin: impl != null) { |
373 _impl = impl; | 384 _impl = impl; |
374 } | 385 } |
375 | 386 |
376 _HostResolverStubControl.fromHandle( | 387 _HostResolverStubControl.fromHandle( |
377 core.MojoHandle handle, [HostResolver impl]) | 388 core.MojoHandle handle, [HostResolver impl]) |
378 : super.fromHandle(handle, autoBegin: impl != null) { | 389 : super.fromHandle(handle, autoBegin: impl != null) { |
379 _impl = impl; | 390 _impl = impl; |
380 } | 391 } |
381 | 392 |
382 _HostResolverStubControl.unbound([this._impl]) : super.unbound(); | 393 _HostResolverStubControl.unbound([this._impl]) : super.unbound(); |
383 | 394 |
384 String get serviceName => HostResolver.serviceName; | 395 String get serviceName => HostResolver.serviceName; |
385 | 396 |
386 | 397 |
387 static HostResolverGetHostAddressesResponseParams _hostResolverGetHostAddresse
sResponseParamsFactory(network_error_mojom.NetworkError result, List<net_address
_mojom.NetAddress> addresses) { | 398 Function _hostResolverGetHostAddressesResponseParamsResponder( |
388 var result = new HostResolverGetHostAddressesResponseParams(); | 399 int requestId) { |
389 result.result = result; | 400 return (network_error_mojom.NetworkError result, List<net_address_mojom.NetAdd
ress> addresses) { |
390 result.addresses = addresses; | 401 var result = new HostResolverGetHostAddressesResponseParams(); |
391 return result; | 402 result.result = result; |
| 403 result.addresses = addresses; |
| 404 sendResponse(buildResponseWithId( |
| 405 result, |
| 406 _hostResolverMethodGetHostAddressesName, |
| 407 requestId, |
| 408 bindings.MessageHeader.kMessageIsResponse)); |
| 409 }; |
392 } | 410 } |
393 | 411 |
394 dynamic handleMessage(bindings.ServiceMessage message) { | 412 void handleMessage(bindings.ServiceMessage message) { |
395 if (bindings.ControlMessageHandler.isControlMessage(message)) { | 413 if (bindings.ControlMessageHandler.isControlMessage(message)) { |
396 return bindings.ControlMessageHandler.handleMessage(this, | 414 bindings.ControlMessageHandler.handleMessage( |
397 0, | 415 this, 0, message); |
398 message); | 416 return; |
399 } | 417 } |
400 if (_impl == null) { | 418 if (_impl == null) { |
401 throw new core.MojoApiError("$this has no implementation set"); | 419 throw new core.MojoApiError("$this has no implementation set"); |
402 } | 420 } |
403 switch (message.header.type) { | 421 switch (message.header.type) { |
404 case _hostResolverMethodGetHostAddressesName: | 422 case _hostResolverMethodGetHostAddressesName: |
405 var params = _HostResolverGetHostAddressesParams.deserialize( | 423 var params = _HostResolverGetHostAddressesParams.deserialize( |
406 message.payload); | 424 message.payload); |
407 var response = _impl.getHostAddresses(params.host,params.family,_hostRes
olverGetHostAddressesResponseParamsFactory); | 425 _impl.getHostAddresses(params.host, params.family, _hostResolverGetHostA
ddressesResponseParamsResponder(message.header.requestId)); |
408 if (response is Future) { | |
409 return response.then((response) { | |
410 if (response != null) { | |
411 return buildResponseWithId( | |
412 response, | |
413 _hostResolverMethodGetHostAddressesName, | |
414 message.header.requestId, | |
415 bindings.MessageHeader.kMessageIsResponse); | |
416 } | |
417 }); | |
418 } else if (response != null) { | |
419 return buildResponseWithId( | |
420 response, | |
421 _hostResolverMethodGetHostAddressesName, | |
422 message.header.requestId, | |
423 bindings.MessageHeader.kMessageIsResponse); | |
424 } | |
425 break; | 426 break; |
426 default: | 427 default: |
427 throw new bindings.MojoCodecError("Unexpected message name"); | 428 throw new bindings.MojoCodecError("Unexpected message name"); |
428 break; | 429 break; |
429 } | 430 } |
430 return null; | |
431 } | 431 } |
432 | 432 |
433 HostResolver get impl => _impl; | 433 HostResolver get impl => _impl; |
434 set impl(HostResolver d) { | 434 set impl(HostResolver d) { |
435 if (d == null) { | 435 if (d == null) { |
436 throw new core.MojoApiError("$this: Cannot set a null implementation"); | 436 throw new core.MojoApiError("$this: Cannot set a null implementation"); |
437 } | 437 } |
438 if (isBound && (_impl == null)) { | 438 if (isBound && (_impl == null)) { |
439 beginHandlingEvents(); | 439 beginHandlingEvents(); |
440 } | 440 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 core.MojoHandle handle, [HostResolver impl]) | 474 core.MojoHandle handle, [HostResolver impl]) |
475 : super(new _HostResolverStubControl.fromHandle(handle, impl)); | 475 : super(new _HostResolverStubControl.fromHandle(handle, impl)); |
476 | 476 |
477 static HostResolverStub newFromEndpoint( | 477 static HostResolverStub newFromEndpoint( |
478 core.MojoMessagePipeEndpoint endpoint) { | 478 core.MojoMessagePipeEndpoint endpoint) { |
479 assert(endpoint.setDescription("For HostResolverStub")); | 479 assert(endpoint.setDescription("For HostResolverStub")); |
480 return new HostResolverStub.fromEndpoint(endpoint); | 480 return new HostResolverStub.fromEndpoint(endpoint); |
481 } | 481 } |
482 | 482 |
483 | 483 |
484 dynamic getHostAddresses(String host,net_address_mojom.NetAddressFamily family
,[Function responseFactory = null]) { | 484 void getHostAddresses(String host,net_address_mojom.NetAddressFamily family,vo
id callback(network_error_mojom.NetworkError result, List<net_address_mojom.NetA
ddress> addresses)) { |
485 return impl.getHostAddresses(host,family,responseFactory); | 485 return impl.getHostAddresses(host,family,callback); |
486 } | 486 } |
487 } | 487 } |
488 | 488 |
489 | 489 |
490 | 490 |
OLD | NEW |