@@ -4,8 +4,9 @@ import 'dart:isolate';
44import 'dart:async' ;
55import 'dart:core' ;
66import 'package:angular2/src/web-workers/shared/message_bus.dart'
7- show MessageBus, MessageBusSink, MessageBusSource ;
7+ show MessageBus;
88import 'package:angular2/src/web-workers/ui/impl.dart' show bootstrapUICommon;
9+ import 'package:angular2/src/web-workers/shared/isolate_message_bus.dart' ;
910
1011/**
1112 * Bootstrapping a WebWorker
@@ -23,63 +24,22 @@ Future<MessageBus> bootstrap(String uri) {
2324/**
2425 * To be called from the main thread to spawn and communicate with the worker thread
2526 */
26- Future <UIMessageBus > spawnWebWorker (Uri uri) {
27+ Future <MessageBus > spawnWebWorker (Uri uri) {
2728 var receivePort = new ReceivePort ();
2829 var isolateEndSendPort = receivePort.sendPort;
2930 return Isolate .spawnUri (uri, const [], isolateEndSendPort).then ((_) {
3031 var source = new UIMessageBusSource (receivePort);
3132 return source.sink.then ((sendPort) {
32- var sink = new UIMessageBusSink (sendPort);
33- return new UIMessageBus (sink, source);
33+ var sink = new IsolateMessageBusSink (sendPort);
34+ return new IsolateMessageBus (sink, source);
3435 });
3536 });
3637}
3738
38- class UIMessageBus extends MessageBus {
39- final UIMessageBusSink sink;
40- final UIMessageBusSource source;
41-
42- UIMessageBus (UIMessageBusSink sink, UIMessageBusSource source)
43- : sink = sink,
44- source = source;
45- }
46-
47- class UIMessageBusSink extends MessageBusSink {
48- final SendPort _port;
49-
50- UIMessageBusSink (SendPort port) : _port = port;
51-
52- void send (message) {
53- _port.send (message);
54- }
55- }
56-
57- class UIMessageBusSource extends MessageBusSource {
58- final ReceivePort _port;
59- final Stream rawDataStream;
60- Map <int , StreamSubscription > _listenerStore =
61- new Map <int , StreamSubscription >();
62- int _numListeners = 0 ;
63-
64- UIMessageBusSource (ReceivePort port)
65- : _port = port,
66- rawDataStream = port.asBroadcastStream ();
39+ class UIMessageBusSource extends IsolateMessageBusSource {
40+ UIMessageBusSource (ReceivePort port) : super (port);
6741
6842 Future <SendPort > get sink => rawDataStream.firstWhere ((message) {
6943 return message is SendPort ;
7044 });
71-
72- int addListener (Function fn) {
73- var subscription = rawDataStream.listen ((message) {
74- fn ({"data" : message});
75- });
76-
77- _listenerStore[++ _numListeners] = subscription;
78- return _numListeners;
79- }
80-
81- void removeListener (int index) {
82- _listenerStore[index].cancel ();
83- _listenerStore.remove (index);
84- }
8545}
0 commit comments