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 http_server_mojom; | 5 library http_server_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_services/http_server/http_request.mojom.dart' as http_reque
st_mojom; | 10 import 'package:mojo_services/http_server/http_request.mojom.dart' as http_reque
st_mojom; |
11 import 'package:mojo_services/http_server/http_response.mojom.dart' as http_resp
onse_mojom; | 11 import 'package:mojo_services/http_server/http_response.mojom.dart' as http_resp
onse_mojom; |
12 | 12 |
13 | 13 |
14 | 14 |
15 class _HttpServerSetHandlerParams extends bindings.Struct { | 15 class _HttpServerSetHandlerParams 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 pattern = null; | 19 String pattern = null; |
20 HttpHandlerInterface handler = null; | 20 HttpHandlerInterface handler = null; |
21 | 21 |
22 _HttpServerSetHandlerParams() : super(kVersions.last.size); | 22 _HttpServerSetHandlerParams() : super(kVersions.last.size); |
23 | 23 |
| 24 _HttpServerSetHandlerParams.init( |
| 25 String this.pattern, |
| 26 HttpHandlerInterface this.handler |
| 27 ) : super(kVersions.last.size); |
| 28 |
24 static _HttpServerSetHandlerParams deserialize(bindings.Message message) { | 29 static _HttpServerSetHandlerParams deserialize(bindings.Message message) { |
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 _HttpServerSetHandlerParams decode(bindings.Decoder decoder0) { | 38 static _HttpServerSetHandlerParams decode(bindings.Decoder decoder0) { |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 | 102 |
98 | 103 |
99 class HttpServerSetHandlerResponseParams extends bindings.Struct { | 104 class HttpServerSetHandlerResponseParams extends bindings.Struct { |
100 static const List<bindings.StructDataHeader> kVersions = const [ | 105 static const List<bindings.StructDataHeader> kVersions = const [ |
101 const bindings.StructDataHeader(16, 0) | 106 const bindings.StructDataHeader(16, 0) |
102 ]; | 107 ]; |
103 bool success = false; | 108 bool success = false; |
104 | 109 |
105 HttpServerSetHandlerResponseParams() : super(kVersions.last.size); | 110 HttpServerSetHandlerResponseParams() : super(kVersions.last.size); |
106 | 111 |
| 112 HttpServerSetHandlerResponseParams.init( |
| 113 bool this.success |
| 114 ) : super(kVersions.last.size); |
| 115 |
107 static HttpServerSetHandlerResponseParams deserialize(bindings.Message message
) { | 116 static HttpServerSetHandlerResponseParams deserialize(bindings.Message message
) { |
108 var decoder = new bindings.Decoder(message); | 117 var decoder = new bindings.Decoder(message); |
109 var result = decode(decoder); | 118 var result = decode(decoder); |
110 if (decoder.excessHandles != null) { | 119 if (decoder.excessHandles != null) { |
111 decoder.excessHandles.forEach((h) => h.close()); | 120 decoder.excessHandles.forEach((h) => h.close()); |
112 } | 121 } |
113 return result; | 122 return result; |
114 } | 123 } |
115 | 124 |
116 static HttpServerSetHandlerResponseParams decode(bindings.Decoder decoder0) { | 125 static HttpServerSetHandlerResponseParams decode(bindings.Decoder decoder0) { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 } | 177 } |
169 | 178 |
170 | 179 |
171 class _HttpServerGetPortParams extends bindings.Struct { | 180 class _HttpServerGetPortParams extends bindings.Struct { |
172 static const List<bindings.StructDataHeader> kVersions = const [ | 181 static const List<bindings.StructDataHeader> kVersions = const [ |
173 const bindings.StructDataHeader(8, 0) | 182 const bindings.StructDataHeader(8, 0) |
174 ]; | 183 ]; |
175 | 184 |
176 _HttpServerGetPortParams() : super(kVersions.last.size); | 185 _HttpServerGetPortParams() : super(kVersions.last.size); |
177 | 186 |
| 187 _HttpServerGetPortParams.init( |
| 188 ) : super(kVersions.last.size); |
| 189 |
178 static _HttpServerGetPortParams deserialize(bindings.Message message) { | 190 static _HttpServerGetPortParams deserialize(bindings.Message message) { |
179 var decoder = new bindings.Decoder(message); | 191 var decoder = new bindings.Decoder(message); |
180 var result = decode(decoder); | 192 var result = decode(decoder); |
181 if (decoder.excessHandles != null) { | 193 if (decoder.excessHandles != null) { |
182 decoder.excessHandles.forEach((h) => h.close()); | 194 decoder.excessHandles.forEach((h) => h.close()); |
183 } | 195 } |
184 return result; | 196 return result; |
185 } | 197 } |
186 | 198 |
187 static _HttpServerGetPortParams decode(bindings.Decoder decoder0) { | 199 static _HttpServerGetPortParams decode(bindings.Decoder decoder0) { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 | 239 |
228 | 240 |
229 class HttpServerGetPortResponseParams extends bindings.Struct { | 241 class HttpServerGetPortResponseParams extends bindings.Struct { |
230 static const List<bindings.StructDataHeader> kVersions = const [ | 242 static const List<bindings.StructDataHeader> kVersions = const [ |
231 const bindings.StructDataHeader(16, 0) | 243 const bindings.StructDataHeader(16, 0) |
232 ]; | 244 ]; |
233 int port = 0; | 245 int port = 0; |
234 | 246 |
235 HttpServerGetPortResponseParams() : super(kVersions.last.size); | 247 HttpServerGetPortResponseParams() : super(kVersions.last.size); |
236 | 248 |
| 249 HttpServerGetPortResponseParams.init( |
| 250 int this.port |
| 251 ) : super(kVersions.last.size); |
| 252 |
237 static HttpServerGetPortResponseParams deserialize(bindings.Message message) { | 253 static HttpServerGetPortResponseParams deserialize(bindings.Message message) { |
238 var decoder = new bindings.Decoder(message); | 254 var decoder = new bindings.Decoder(message); |
239 var result = decode(decoder); | 255 var result = decode(decoder); |
240 if (decoder.excessHandles != null) { | 256 if (decoder.excessHandles != null) { |
241 decoder.excessHandles.forEach((h) => h.close()); | 257 decoder.excessHandles.forEach((h) => h.close()); |
242 } | 258 } |
243 return result; | 259 return result; |
244 } | 260 } |
245 | 261 |
246 static HttpServerGetPortResponseParams decode(bindings.Decoder decoder0) { | 262 static HttpServerGetPortResponseParams decode(bindings.Decoder decoder0) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 | 315 |
300 | 316 |
301 class _HttpHandlerHandleRequestParams extends bindings.Struct { | 317 class _HttpHandlerHandleRequestParams extends bindings.Struct { |
302 static const List<bindings.StructDataHeader> kVersions = const [ | 318 static const List<bindings.StructDataHeader> kVersions = const [ |
303 const bindings.StructDataHeader(16, 0) | 319 const bindings.StructDataHeader(16, 0) |
304 ]; | 320 ]; |
305 http_request_mojom.HttpRequest request = null; | 321 http_request_mojom.HttpRequest request = null; |
306 | 322 |
307 _HttpHandlerHandleRequestParams() : super(kVersions.last.size); | 323 _HttpHandlerHandleRequestParams() : super(kVersions.last.size); |
308 | 324 |
| 325 _HttpHandlerHandleRequestParams.init( |
| 326 http_request_mojom.HttpRequest this.request |
| 327 ) : super(kVersions.last.size); |
| 328 |
309 static _HttpHandlerHandleRequestParams deserialize(bindings.Message message) { | 329 static _HttpHandlerHandleRequestParams deserialize(bindings.Message message) { |
310 var decoder = new bindings.Decoder(message); | 330 var decoder = new bindings.Decoder(message); |
311 var result = decode(decoder); | 331 var result = decode(decoder); |
312 if (decoder.excessHandles != null) { | 332 if (decoder.excessHandles != null) { |
313 decoder.excessHandles.forEach((h) => h.close()); | 333 decoder.excessHandles.forEach((h) => h.close()); |
314 } | 334 } |
315 return result; | 335 return result; |
316 } | 336 } |
317 | 337 |
318 static _HttpHandlerHandleRequestParams decode(bindings.Decoder decoder0) { | 338 static _HttpHandlerHandleRequestParams decode(bindings.Decoder decoder0) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 | 391 |
372 | 392 |
373 class HttpHandlerHandleRequestResponseParams extends bindings.Struct { | 393 class HttpHandlerHandleRequestResponseParams extends bindings.Struct { |
374 static const List<bindings.StructDataHeader> kVersions = const [ | 394 static const List<bindings.StructDataHeader> kVersions = const [ |
375 const bindings.StructDataHeader(16, 0) | 395 const bindings.StructDataHeader(16, 0) |
376 ]; | 396 ]; |
377 http_response_mojom.HttpResponse response = null; | 397 http_response_mojom.HttpResponse response = null; |
378 | 398 |
379 HttpHandlerHandleRequestResponseParams() : super(kVersions.last.size); | 399 HttpHandlerHandleRequestResponseParams() : super(kVersions.last.size); |
380 | 400 |
| 401 HttpHandlerHandleRequestResponseParams.init( |
| 402 http_response_mojom.HttpResponse this.response |
| 403 ) : super(kVersions.last.size); |
| 404 |
381 static HttpHandlerHandleRequestResponseParams deserialize(bindings.Message mes
sage) { | 405 static HttpHandlerHandleRequestResponseParams deserialize(bindings.Message mes
sage) { |
382 var decoder = new bindings.Decoder(message); | 406 var decoder = new bindings.Decoder(message); |
383 var result = decode(decoder); | 407 var result = decode(decoder); |
384 if (decoder.excessHandles != null) { | 408 if (decoder.excessHandles != null) { |
385 decoder.excessHandles.forEach((h) => h.close()); | 409 decoder.excessHandles.forEach((h) => h.close()); |
386 } | 410 } |
387 return result; | 411 return result; |
388 } | 412 } |
389 | 413 |
390 static HttpHandlerHandleRequestResponseParams decode(bindings.Decoder decoder0
) { | 414 static HttpHandlerHandleRequestResponseParams decode(bindings.Decoder decoder0
) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 Map toJson() { | 462 Map toJson() { |
439 throw new bindings.MojoCodecError( | 463 throw new bindings.MojoCodecError( |
440 'Object containing handles cannot be encoded to JSON.'); | 464 'Object containing handles cannot be encoded to JSON.'); |
441 } | 465 } |
442 } | 466 } |
443 | 467 |
444 const int _httpServerMethodSetHandlerName = 0; | 468 const int _httpServerMethodSetHandlerName = 0; |
445 const int _httpServerMethodGetPortName = 1; | 469 const int _httpServerMethodGetPortName = 1; |
446 | 470 |
447 class _HttpServerServiceDescription implements service_describer.ServiceDescript
ion { | 471 class _HttpServerServiceDescription implements service_describer.ServiceDescript
ion { |
448 dynamic getTopLevelInterface([Function responseFactory]) => | 472 void getTopLevelInterface(Function responder) { |
449 responseFactory(null); | 473 responder(null); |
| 474 } |
450 | 475 |
451 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => | 476 void getTypeDefinition(String typeKey, Function responder) { |
452 responseFactory(null); | 477 responder(null); |
| 478 } |
453 | 479 |
454 dynamic getAllTypeDefinitions([Function responseFactory]) => | 480 void getAllTypeDefinitions(Function responder) { |
455 responseFactory(null); | 481 responder(null); |
| 482 } |
456 } | 483 } |
457 | 484 |
458 abstract class HttpServer { | 485 abstract class HttpServer { |
459 static const String serviceName = null; | 486 static const String serviceName = null; |
460 | 487 |
461 static service_describer.ServiceDescription _cachedServiceDescription; | 488 static service_describer.ServiceDescription _cachedServiceDescription; |
462 static service_describer.ServiceDescription get serviceDescription { | 489 static service_describer.ServiceDescription get serviceDescription { |
463 if (_cachedServiceDescription == null) { | 490 if (_cachedServiceDescription == null) { |
464 _cachedServiceDescription = new _HttpServerServiceDescription(); | 491 _cachedServiceDescription = new _HttpServerServiceDescription(); |
465 } | 492 } |
466 return _cachedServiceDescription; | 493 return _cachedServiceDescription; |
467 } | 494 } |
468 | 495 |
469 static HttpServerProxy connectToService( | 496 static HttpServerProxy connectToService( |
470 bindings.ServiceConnector s, String url, [String serviceName]) { | 497 bindings.ServiceConnector s, String url, [String serviceName]) { |
471 HttpServerProxy p = new HttpServerProxy.unbound(); | 498 HttpServerProxy p = new HttpServerProxy.unbound(); |
472 String name = serviceName ?? HttpServer.serviceName; | 499 String name = serviceName ?? HttpServer.serviceName; |
473 if ((name == null) || name.isEmpty) { | 500 if ((name == null) || name.isEmpty) { |
474 throw new core.MojoApiError( | 501 throw new core.MojoApiError( |
475 "If an interface has no ServiceName, then one must be provided."); | 502 "If an interface has no ServiceName, then one must be provided."); |
476 } | 503 } |
477 s.connectToService(url, p, name); | 504 s.connectToService(url, p, name); |
478 return p; | 505 return p; |
479 } | 506 } |
480 dynamic setHandler(String pattern,HttpHandlerInterface handler,[Function respo
nseFactory = null]); | 507 void setHandler(String pattern,HttpHandlerInterface handler,void callback(bool
success)); |
481 dynamic getPort([Function responseFactory = null]); | 508 void getPort(void callback(int port)); |
482 } | 509 } |
483 | 510 |
484 abstract class HttpServerInterface | 511 abstract class HttpServerInterface |
485 implements bindings.MojoInterface<HttpServer>, | 512 implements bindings.MojoInterface<HttpServer>, |
486 HttpServer { | 513 HttpServer { |
487 factory HttpServerInterface([HttpServer impl]) => | 514 factory HttpServerInterface([HttpServer impl]) => |
488 new HttpServerStub.unbound(impl); | 515 new HttpServerStub.unbound(impl); |
489 factory HttpServerInterface.fromEndpoint( | 516 factory HttpServerInterface.fromEndpoint( |
490 core.MojoMessagePipeEndpoint endpoint, | 517 core.MojoMessagePipeEndpoint endpoint, |
491 [HttpServer impl]) => | 518 [HttpServer impl]) => |
(...skipping 22 matching lines...) Expand all Loading... |
514 | 541 |
515 void handleResponse(bindings.ServiceMessage message) { | 542 void handleResponse(bindings.ServiceMessage message) { |
516 switch (message.header.type) { | 543 switch (message.header.type) { |
517 case _httpServerMethodSetHandlerName: | 544 case _httpServerMethodSetHandlerName: |
518 var r = HttpServerSetHandlerResponseParams.deserialize( | 545 var r = HttpServerSetHandlerResponseParams.deserialize( |
519 message.payload); | 546 message.payload); |
520 if (!message.header.hasRequestId) { | 547 if (!message.header.hasRequestId) { |
521 proxyError("Expected a message with a valid request Id."); | 548 proxyError("Expected a message with a valid request Id."); |
522 return; | 549 return; |
523 } | 550 } |
524 Completer c = completerMap[message.header.requestId]; | 551 Function callback = callbackMap[message.header.requestId]; |
525 if (c == null) { | 552 if (callback == null) { |
526 proxyError( | 553 proxyError( |
527 "Message had unknown request Id: ${message.header.requestId}"); | 554 "Message had unknown request Id: ${message.header.requestId}"); |
528 return; | 555 return; |
529 } | 556 } |
530 completerMap.remove(message.header.requestId); | 557 callbackMap.remove(message.header.requestId); |
531 if (c.isCompleted) { | 558 callback(r.success ); |
532 proxyError("Response completer already completed"); | |
533 return; | |
534 } | |
535 c.complete(r); | |
536 break; | 559 break; |
537 case _httpServerMethodGetPortName: | 560 case _httpServerMethodGetPortName: |
538 var r = HttpServerGetPortResponseParams.deserialize( | 561 var r = HttpServerGetPortResponseParams.deserialize( |
539 message.payload); | 562 message.payload); |
540 if (!message.header.hasRequestId) { | 563 if (!message.header.hasRequestId) { |
541 proxyError("Expected a message with a valid request Id."); | 564 proxyError("Expected a message with a valid request Id."); |
542 return; | 565 return; |
543 } | 566 } |
544 Completer c = completerMap[message.header.requestId]; | 567 Function callback = callbackMap[message.header.requestId]; |
545 if (c == null) { | 568 if (callback == null) { |
546 proxyError( | 569 proxyError( |
547 "Message had unknown request Id: ${message.header.requestId}"); | 570 "Message had unknown request Id: ${message.header.requestId}"); |
548 return; | 571 return; |
549 } | 572 } |
550 completerMap.remove(message.header.requestId); | 573 callbackMap.remove(message.header.requestId); |
551 if (c.isCompleted) { | 574 callback(r.port ); |
552 proxyError("Response completer already completed"); | |
553 return; | |
554 } | |
555 c.complete(r); | |
556 break; | 575 break; |
557 default: | 576 default: |
558 proxyError("Unexpected message type: ${message.header.type}"); | 577 proxyError("Unexpected message type: ${message.header.type}"); |
559 close(immediate: true); | 578 close(immediate: true); |
560 break; | 579 break; |
561 } | 580 } |
562 } | 581 } |
563 | 582 |
564 HttpServer get impl => null; | 583 HttpServer get impl => null; |
565 set impl(HttpServer _) { | 584 set impl(HttpServer _) { |
(...skipping 22 matching lines...) Expand all Loading... |
588 HttpServerProxy.unbound() | 607 HttpServerProxy.unbound() |
589 : super(new _HttpServerProxyControl.unbound()); | 608 : super(new _HttpServerProxyControl.unbound()); |
590 | 609 |
591 static HttpServerProxy newFromEndpoint( | 610 static HttpServerProxy newFromEndpoint( |
592 core.MojoMessagePipeEndpoint endpoint) { | 611 core.MojoMessagePipeEndpoint endpoint) { |
593 assert(endpoint.setDescription("For HttpServerProxy")); | 612 assert(endpoint.setDescription("For HttpServerProxy")); |
594 return new HttpServerProxy.fromEndpoint(endpoint); | 613 return new HttpServerProxy.fromEndpoint(endpoint); |
595 } | 614 } |
596 | 615 |
597 | 616 |
598 dynamic setHandler(String pattern,HttpHandlerInterface handler,[Function respo
nseFactory = null]) { | 617 void setHandler(String pattern,HttpHandlerInterface handler,void callback(bool
success)) { |
599 var params = new _HttpServerSetHandlerParams(); | 618 var params = new _HttpServerSetHandlerParams(); |
600 params.pattern = pattern; | 619 params.pattern = pattern; |
601 params.handler = handler; | 620 params.handler = handler; |
602 return ctrl.sendMessageWithRequestId( | 621 ctrl.sendMessageWithRequestId( |
603 params, | 622 params, |
604 _httpServerMethodSetHandlerName, | 623 _httpServerMethodSetHandlerName, |
605 -1, | 624 -1, |
606 bindings.MessageHeader.kMessageExpectsResponse); | 625 bindings.MessageHeader.kMessageExpectsResponse, |
| 626 callback); |
607 } | 627 } |
608 dynamic getPort([Function responseFactory = null]) { | 628 void getPort(void callback(int port)) { |
609 var params = new _HttpServerGetPortParams(); | 629 var params = new _HttpServerGetPortParams(); |
610 return ctrl.sendMessageWithRequestId( | 630 ctrl.sendMessageWithRequestId( |
611 params, | 631 params, |
612 _httpServerMethodGetPortName, | 632 _httpServerMethodGetPortName, |
613 -1, | 633 -1, |
614 bindings.MessageHeader.kMessageExpectsResponse); | 634 bindings.MessageHeader.kMessageExpectsResponse, |
| 635 callback); |
615 } | 636 } |
616 } | 637 } |
617 | 638 |
618 class _HttpServerStubControl | 639 class _HttpServerStubControl |
619 extends bindings.StubMessageHandler | 640 extends bindings.StubMessageHandler |
620 implements bindings.StubControl<HttpServer> { | 641 implements bindings.StubControl<HttpServer> { |
621 HttpServer _impl; | 642 HttpServer _impl; |
622 | 643 |
623 _HttpServerStubControl.fromEndpoint( | 644 _HttpServerStubControl.fromEndpoint( |
624 core.MojoMessagePipeEndpoint endpoint, [HttpServer impl]) | 645 core.MojoMessagePipeEndpoint endpoint, [HttpServer impl]) |
625 : super.fromEndpoint(endpoint, autoBegin: impl != null) { | 646 : super.fromEndpoint(endpoint, autoBegin: impl != null) { |
626 _impl = impl; | 647 _impl = impl; |
627 } | 648 } |
628 | 649 |
629 _HttpServerStubControl.fromHandle( | 650 _HttpServerStubControl.fromHandle( |
630 core.MojoHandle handle, [HttpServer impl]) | 651 core.MojoHandle handle, [HttpServer impl]) |
631 : super.fromHandle(handle, autoBegin: impl != null) { | 652 : super.fromHandle(handle, autoBegin: impl != null) { |
632 _impl = impl; | 653 _impl = impl; |
633 } | 654 } |
634 | 655 |
635 _HttpServerStubControl.unbound([this._impl]) : super.unbound(); | 656 _HttpServerStubControl.unbound([this._impl]) : super.unbound(); |
636 | 657 |
637 String get serviceName => HttpServer.serviceName; | 658 String get serviceName => HttpServer.serviceName; |
638 | 659 |
639 | 660 |
640 HttpServerSetHandlerResponseParams _httpServerSetHandlerResponseParamsFactory(
bool success) { | 661 Function _httpServerSetHandlerResponseParamsResponder( |
641 var result = new HttpServerSetHandlerResponseParams(); | 662 int requestId) { |
642 result.success = success; | 663 return (bool success) { |
643 return result; | 664 var result = new HttpServerSetHandlerResponseParams(); |
| 665 result.success = success; |
| 666 sendResponse(buildResponseWithId( |
| 667 result, |
| 668 _httpServerMethodSetHandlerName, |
| 669 requestId, |
| 670 bindings.MessageHeader.kMessageIsResponse)); |
| 671 }; |
644 } | 672 } |
645 HttpServerGetPortResponseParams _httpServerGetPortResponseParamsFactory(int po
rt) { | 673 Function _httpServerGetPortResponseParamsResponder( |
646 var result = new HttpServerGetPortResponseParams(); | 674 int requestId) { |
647 result.port = port; | 675 return (int port) { |
648 return result; | 676 var result = new HttpServerGetPortResponseParams(); |
| 677 result.port = port; |
| 678 sendResponse(buildResponseWithId( |
| 679 result, |
| 680 _httpServerMethodGetPortName, |
| 681 requestId, |
| 682 bindings.MessageHeader.kMessageIsResponse)); |
| 683 }; |
649 } | 684 } |
650 | 685 |
651 dynamic handleMessage(bindings.ServiceMessage message) { | 686 void handleMessage(bindings.ServiceMessage message) { |
652 if (bindings.ControlMessageHandler.isControlMessage(message)) { | 687 if (bindings.ControlMessageHandler.isControlMessage(message)) { |
653 return bindings.ControlMessageHandler.handleMessage(this, | 688 bindings.ControlMessageHandler.handleMessage( |
654 0, | 689 this, 0, message); |
655 message); | 690 return; |
656 } | 691 } |
657 if (_impl == null) { | 692 if (_impl == null) { |
658 throw new core.MojoApiError("$this has no implementation set"); | 693 throw new core.MojoApiError("$this has no implementation set"); |
659 } | 694 } |
660 switch (message.header.type) { | 695 switch (message.header.type) { |
661 case _httpServerMethodSetHandlerName: | 696 case _httpServerMethodSetHandlerName: |
662 var params = _HttpServerSetHandlerParams.deserialize( | 697 var params = _HttpServerSetHandlerParams.deserialize( |
663 message.payload); | 698 message.payload); |
664 var response = _impl.setHandler(params.pattern,params.handler,_httpServe
rSetHandlerResponseParamsFactory); | 699 _impl.setHandler(params.pattern, params.handler, _httpServerSetHandlerRe
sponseParamsResponder(message.header.requestId)); |
665 if (response is Future) { | |
666 return response.then((response) { | |
667 if (response != null) { | |
668 return buildResponseWithId( | |
669 response, | |
670 _httpServerMethodSetHandlerName, | |
671 message.header.requestId, | |
672 bindings.MessageHeader.kMessageIsResponse); | |
673 } | |
674 }); | |
675 } else if (response != null) { | |
676 return buildResponseWithId( | |
677 response, | |
678 _httpServerMethodSetHandlerName, | |
679 message.header.requestId, | |
680 bindings.MessageHeader.kMessageIsResponse); | |
681 } | |
682 break; | 700 break; |
683 case _httpServerMethodGetPortName: | 701 case _httpServerMethodGetPortName: |
684 var response = _impl.getPort(_httpServerGetPortResponseParamsFactory); | 702 _impl.getPort(_httpServerGetPortResponseParamsResponder(message.header.r
equestId)); |
685 if (response is Future) { | |
686 return response.then((response) { | |
687 if (response != null) { | |
688 return buildResponseWithId( | |
689 response, | |
690 _httpServerMethodGetPortName, | |
691 message.header.requestId, | |
692 bindings.MessageHeader.kMessageIsResponse); | |
693 } | |
694 }); | |
695 } else if (response != null) { | |
696 return buildResponseWithId( | |
697 response, | |
698 _httpServerMethodGetPortName, | |
699 message.header.requestId, | |
700 bindings.MessageHeader.kMessageIsResponse); | |
701 } | |
702 break; | 703 break; |
703 default: | 704 default: |
704 throw new bindings.MojoCodecError("Unexpected message name"); | 705 throw new bindings.MojoCodecError("Unexpected message name"); |
705 break; | 706 break; |
706 } | 707 } |
707 return null; | |
708 } | 708 } |
709 | 709 |
710 HttpServer get impl => _impl; | 710 HttpServer get impl => _impl; |
711 set impl(HttpServer d) { | 711 set impl(HttpServer d) { |
712 if (d == null) { | 712 if (d == null) { |
713 throw new core.MojoApiError("$this: Cannot set a null implementation"); | 713 throw new core.MojoApiError("$this: Cannot set a null implementation"); |
714 } | 714 } |
715 if (isBound && (_impl == null)) { | 715 if (isBound && (_impl == null)) { |
716 beginHandlingEvents(); | 716 beginHandlingEvents(); |
717 } | 717 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 core.MojoHandle handle, [HttpServer impl]) | 751 core.MojoHandle handle, [HttpServer impl]) |
752 : super(new _HttpServerStubControl.fromHandle(handle, impl)); | 752 : super(new _HttpServerStubControl.fromHandle(handle, impl)); |
753 | 753 |
754 static HttpServerStub newFromEndpoint( | 754 static HttpServerStub newFromEndpoint( |
755 core.MojoMessagePipeEndpoint endpoint) { | 755 core.MojoMessagePipeEndpoint endpoint) { |
756 assert(endpoint.setDescription("For HttpServerStub")); | 756 assert(endpoint.setDescription("For HttpServerStub")); |
757 return new HttpServerStub.fromEndpoint(endpoint); | 757 return new HttpServerStub.fromEndpoint(endpoint); |
758 } | 758 } |
759 | 759 |
760 | 760 |
761 dynamic setHandler(String pattern,HttpHandlerInterface handler,[Function respo
nseFactory = null]) { | 761 void setHandler(String pattern,HttpHandlerInterface handler,void callback(bool
success)) { |
762 return impl.setHandler(pattern,handler,responseFactory); | 762 return impl.setHandler(pattern,handler,callback); |
763 } | 763 } |
764 dynamic getPort([Function responseFactory = null]) { | 764 void getPort(void callback(int port)) { |
765 return impl.getPort(responseFactory); | 765 return impl.getPort(callback); |
766 } | 766 } |
767 } | 767 } |
768 | 768 |
769 const int _httpHandlerMethodHandleRequestName = 0; | 769 const int _httpHandlerMethodHandleRequestName = 0; |
770 | 770 |
771 class _HttpHandlerServiceDescription implements service_describer.ServiceDescrip
tion { | 771 class _HttpHandlerServiceDescription implements service_describer.ServiceDescrip
tion { |
772 dynamic getTopLevelInterface([Function responseFactory]) => | 772 void getTopLevelInterface(Function responder) { |
773 responseFactory(null); | 773 responder(null); |
| 774 } |
774 | 775 |
775 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => | 776 void getTypeDefinition(String typeKey, Function responder) { |
776 responseFactory(null); | 777 responder(null); |
| 778 } |
777 | 779 |
778 dynamic getAllTypeDefinitions([Function responseFactory]) => | 780 void getAllTypeDefinitions(Function responder) { |
779 responseFactory(null); | 781 responder(null); |
| 782 } |
780 } | 783 } |
781 | 784 |
782 abstract class HttpHandler { | 785 abstract class HttpHandler { |
783 static const String serviceName = null; | 786 static const String serviceName = null; |
784 | 787 |
785 static service_describer.ServiceDescription _cachedServiceDescription; | 788 static service_describer.ServiceDescription _cachedServiceDescription; |
786 static service_describer.ServiceDescription get serviceDescription { | 789 static service_describer.ServiceDescription get serviceDescription { |
787 if (_cachedServiceDescription == null) { | 790 if (_cachedServiceDescription == null) { |
788 _cachedServiceDescription = new _HttpHandlerServiceDescription(); | 791 _cachedServiceDescription = new _HttpHandlerServiceDescription(); |
789 } | 792 } |
790 return _cachedServiceDescription; | 793 return _cachedServiceDescription; |
791 } | 794 } |
792 | 795 |
793 static HttpHandlerProxy connectToService( | 796 static HttpHandlerProxy connectToService( |
794 bindings.ServiceConnector s, String url, [String serviceName]) { | 797 bindings.ServiceConnector s, String url, [String serviceName]) { |
795 HttpHandlerProxy p = new HttpHandlerProxy.unbound(); | 798 HttpHandlerProxy p = new HttpHandlerProxy.unbound(); |
796 String name = serviceName ?? HttpHandler.serviceName; | 799 String name = serviceName ?? HttpHandler.serviceName; |
797 if ((name == null) || name.isEmpty) { | 800 if ((name == null) || name.isEmpty) { |
798 throw new core.MojoApiError( | 801 throw new core.MojoApiError( |
799 "If an interface has no ServiceName, then one must be provided."); | 802 "If an interface has no ServiceName, then one must be provided."); |
800 } | 803 } |
801 s.connectToService(url, p, name); | 804 s.connectToService(url, p, name); |
802 return p; | 805 return p; |
803 } | 806 } |
804 dynamic handleRequest(http_request_mojom.HttpRequest request,[Function respons
eFactory = null]); | 807 void handleRequest(http_request_mojom.HttpRequest request,void callback(http_r
esponse_mojom.HttpResponse response)); |
805 } | 808 } |
806 | 809 |
807 abstract class HttpHandlerInterface | 810 abstract class HttpHandlerInterface |
808 implements bindings.MojoInterface<HttpHandler>, | 811 implements bindings.MojoInterface<HttpHandler>, |
809 HttpHandler { | 812 HttpHandler { |
810 factory HttpHandlerInterface([HttpHandler impl]) => | 813 factory HttpHandlerInterface([HttpHandler impl]) => |
811 new HttpHandlerStub.unbound(impl); | 814 new HttpHandlerStub.unbound(impl); |
812 factory HttpHandlerInterface.fromEndpoint( | 815 factory HttpHandlerInterface.fromEndpoint( |
813 core.MojoMessagePipeEndpoint endpoint, | 816 core.MojoMessagePipeEndpoint endpoint, |
814 [HttpHandler impl]) => | 817 [HttpHandler impl]) => |
(...skipping 22 matching lines...) Expand all Loading... |
837 | 840 |
838 void handleResponse(bindings.ServiceMessage message) { | 841 void handleResponse(bindings.ServiceMessage message) { |
839 switch (message.header.type) { | 842 switch (message.header.type) { |
840 case _httpHandlerMethodHandleRequestName: | 843 case _httpHandlerMethodHandleRequestName: |
841 var r = HttpHandlerHandleRequestResponseParams.deserialize( | 844 var r = HttpHandlerHandleRequestResponseParams.deserialize( |
842 message.payload); | 845 message.payload); |
843 if (!message.header.hasRequestId) { | 846 if (!message.header.hasRequestId) { |
844 proxyError("Expected a message with a valid request Id."); | 847 proxyError("Expected a message with a valid request Id."); |
845 return; | 848 return; |
846 } | 849 } |
847 Completer c = completerMap[message.header.requestId]; | 850 Function callback = callbackMap[message.header.requestId]; |
848 if (c == null) { | 851 if (callback == null) { |
849 proxyError( | 852 proxyError( |
850 "Message had unknown request Id: ${message.header.requestId}"); | 853 "Message had unknown request Id: ${message.header.requestId}"); |
851 return; | 854 return; |
852 } | 855 } |
853 completerMap.remove(message.header.requestId); | 856 callbackMap.remove(message.header.requestId); |
854 if (c.isCompleted) { | 857 callback(r.response ); |
855 proxyError("Response completer already completed"); | |
856 return; | |
857 } | |
858 c.complete(r); | |
859 break; | 858 break; |
860 default: | 859 default: |
861 proxyError("Unexpected message type: ${message.header.type}"); | 860 proxyError("Unexpected message type: ${message.header.type}"); |
862 close(immediate: true); | 861 close(immediate: true); |
863 break; | 862 break; |
864 } | 863 } |
865 } | 864 } |
866 | 865 |
867 HttpHandler get impl => null; | 866 HttpHandler get impl => null; |
868 set impl(HttpHandler _) { | 867 set impl(HttpHandler _) { |
(...skipping 22 matching lines...) Expand all Loading... |
891 HttpHandlerProxy.unbound() | 890 HttpHandlerProxy.unbound() |
892 : super(new _HttpHandlerProxyControl.unbound()); | 891 : super(new _HttpHandlerProxyControl.unbound()); |
893 | 892 |
894 static HttpHandlerProxy newFromEndpoint( | 893 static HttpHandlerProxy newFromEndpoint( |
895 core.MojoMessagePipeEndpoint endpoint) { | 894 core.MojoMessagePipeEndpoint endpoint) { |
896 assert(endpoint.setDescription("For HttpHandlerProxy")); | 895 assert(endpoint.setDescription("For HttpHandlerProxy")); |
897 return new HttpHandlerProxy.fromEndpoint(endpoint); | 896 return new HttpHandlerProxy.fromEndpoint(endpoint); |
898 } | 897 } |
899 | 898 |
900 | 899 |
901 dynamic handleRequest(http_request_mojom.HttpRequest request,[Function respons
eFactory = null]) { | 900 void handleRequest(http_request_mojom.HttpRequest request,void callback(http_r
esponse_mojom.HttpResponse response)) { |
902 var params = new _HttpHandlerHandleRequestParams(); | 901 var params = new _HttpHandlerHandleRequestParams(); |
903 params.request = request; | 902 params.request = request; |
904 return ctrl.sendMessageWithRequestId( | 903 ctrl.sendMessageWithRequestId( |
905 params, | 904 params, |
906 _httpHandlerMethodHandleRequestName, | 905 _httpHandlerMethodHandleRequestName, |
907 -1, | 906 -1, |
908 bindings.MessageHeader.kMessageExpectsResponse); | 907 bindings.MessageHeader.kMessageExpectsResponse, |
| 908 callback); |
909 } | 909 } |
910 } | 910 } |
911 | 911 |
912 class _HttpHandlerStubControl | 912 class _HttpHandlerStubControl |
913 extends bindings.StubMessageHandler | 913 extends bindings.StubMessageHandler |
914 implements bindings.StubControl<HttpHandler> { | 914 implements bindings.StubControl<HttpHandler> { |
915 HttpHandler _impl; | 915 HttpHandler _impl; |
916 | 916 |
917 _HttpHandlerStubControl.fromEndpoint( | 917 _HttpHandlerStubControl.fromEndpoint( |
918 core.MojoMessagePipeEndpoint endpoint, [HttpHandler impl]) | 918 core.MojoMessagePipeEndpoint endpoint, [HttpHandler impl]) |
919 : super.fromEndpoint(endpoint, autoBegin: impl != null) { | 919 : super.fromEndpoint(endpoint, autoBegin: impl != null) { |
920 _impl = impl; | 920 _impl = impl; |
921 } | 921 } |
922 | 922 |
923 _HttpHandlerStubControl.fromHandle( | 923 _HttpHandlerStubControl.fromHandle( |
924 core.MojoHandle handle, [HttpHandler impl]) | 924 core.MojoHandle handle, [HttpHandler impl]) |
925 : super.fromHandle(handle, autoBegin: impl != null) { | 925 : super.fromHandle(handle, autoBegin: impl != null) { |
926 _impl = impl; | 926 _impl = impl; |
927 } | 927 } |
928 | 928 |
929 _HttpHandlerStubControl.unbound([this._impl]) : super.unbound(); | 929 _HttpHandlerStubControl.unbound([this._impl]) : super.unbound(); |
930 | 930 |
931 String get serviceName => HttpHandler.serviceName; | 931 String get serviceName => HttpHandler.serviceName; |
932 | 932 |
933 | 933 |
934 HttpHandlerHandleRequestResponseParams _httpHandlerHandleRequestResponseParams
Factory(http_response_mojom.HttpResponse response) { | 934 Function _httpHandlerHandleRequestResponseParamsResponder( |
935 var result = new HttpHandlerHandleRequestResponseParams(); | 935 int requestId) { |
936 result.response = response; | 936 return (http_response_mojom.HttpResponse response) { |
937 return result; | 937 var result = new HttpHandlerHandleRequestResponseParams(); |
| 938 result.response = response; |
| 939 sendResponse(buildResponseWithId( |
| 940 result, |
| 941 _httpHandlerMethodHandleRequestName, |
| 942 requestId, |
| 943 bindings.MessageHeader.kMessageIsResponse)); |
| 944 }; |
938 } | 945 } |
939 | 946 |
940 dynamic handleMessage(bindings.ServiceMessage message) { | 947 void handleMessage(bindings.ServiceMessage message) { |
941 if (bindings.ControlMessageHandler.isControlMessage(message)) { | 948 if (bindings.ControlMessageHandler.isControlMessage(message)) { |
942 return bindings.ControlMessageHandler.handleMessage(this, | 949 bindings.ControlMessageHandler.handleMessage( |
943 0, | 950 this, 0, message); |
944 message); | 951 return; |
945 } | 952 } |
946 if (_impl == null) { | 953 if (_impl == null) { |
947 throw new core.MojoApiError("$this has no implementation set"); | 954 throw new core.MojoApiError("$this has no implementation set"); |
948 } | 955 } |
949 switch (message.header.type) { | 956 switch (message.header.type) { |
950 case _httpHandlerMethodHandleRequestName: | 957 case _httpHandlerMethodHandleRequestName: |
951 var params = _HttpHandlerHandleRequestParams.deserialize( | 958 var params = _HttpHandlerHandleRequestParams.deserialize( |
952 message.payload); | 959 message.payload); |
953 var response = _impl.handleRequest(params.request,_httpHandlerHandleRequ
estResponseParamsFactory); | 960 _impl.handleRequest(params.request, _httpHandlerHandleRequestResponsePar
amsResponder(message.header.requestId)); |
954 if (response is Future) { | |
955 return response.then((response) { | |
956 if (response != null) { | |
957 return buildResponseWithId( | |
958 response, | |
959 _httpHandlerMethodHandleRequestName, | |
960 message.header.requestId, | |
961 bindings.MessageHeader.kMessageIsResponse); | |
962 } | |
963 }); | |
964 } else if (response != null) { | |
965 return buildResponseWithId( | |
966 response, | |
967 _httpHandlerMethodHandleRequestName, | |
968 message.header.requestId, | |
969 bindings.MessageHeader.kMessageIsResponse); | |
970 } | |
971 break; | 961 break; |
972 default: | 962 default: |
973 throw new bindings.MojoCodecError("Unexpected message name"); | 963 throw new bindings.MojoCodecError("Unexpected message name"); |
974 break; | 964 break; |
975 } | 965 } |
976 return null; | |
977 } | 966 } |
978 | 967 |
979 HttpHandler get impl => _impl; | 968 HttpHandler get impl => _impl; |
980 set impl(HttpHandler d) { | 969 set impl(HttpHandler d) { |
981 if (d == null) { | 970 if (d == null) { |
982 throw new core.MojoApiError("$this: Cannot set a null implementation"); | 971 throw new core.MojoApiError("$this: Cannot set a null implementation"); |
983 } | 972 } |
984 if (isBound && (_impl == null)) { | 973 if (isBound && (_impl == null)) { |
985 beginHandlingEvents(); | 974 beginHandlingEvents(); |
986 } | 975 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1020 core.MojoHandle handle, [HttpHandler impl]) | 1009 core.MojoHandle handle, [HttpHandler impl]) |
1021 : super(new _HttpHandlerStubControl.fromHandle(handle, impl)); | 1010 : super(new _HttpHandlerStubControl.fromHandle(handle, impl)); |
1022 | 1011 |
1023 static HttpHandlerStub newFromEndpoint( | 1012 static HttpHandlerStub newFromEndpoint( |
1024 core.MojoMessagePipeEndpoint endpoint) { | 1013 core.MojoMessagePipeEndpoint endpoint) { |
1025 assert(endpoint.setDescription("For HttpHandlerStub")); | 1014 assert(endpoint.setDescription("For HttpHandlerStub")); |
1026 return new HttpHandlerStub.fromEndpoint(endpoint); | 1015 return new HttpHandlerStub.fromEndpoint(endpoint); |
1027 } | 1016 } |
1028 | 1017 |
1029 | 1018 |
1030 dynamic handleRequest(http_request_mojom.HttpRequest request,[Function respons
eFactory = null]) { | 1019 void handleRequest(http_request_mojom.HttpRequest request,void callback(http_r
esponse_mojom.HttpResponse response)) { |
1031 return impl.handleRequest(request,responseFactory); | 1020 return impl.handleRequest(request,callback); |
1032 } | 1021 } |
1033 } | 1022 } |
1034 | 1023 |
1035 | 1024 |
1036 | 1025 |
OLD | NEW |