OLD | NEW |
1 var isolate = dart.defineLibrary(isolate, {}); | 1 var isolate = dart.defineLibrary(isolate, {}); |
2 var core = dart.import(core); | 2 var core = dart.import(core); |
3 var _isolate_helper = dart.lazyImport(_isolate_helper); | 3 var _isolate_helper = dart.lazyImport(_isolate_helper); |
4 var async = dart.import(async); | 4 var async = dart.import(async); |
5 (function(exports, core, _isolate_helper, async) { | 5 (function(exports, core, _isolate_helper, async) { |
6 'use strict'; | 6 'use strict'; |
7 class Capability extends core.Object { | 7 class Capability extends core.Object { |
8 Capability() { | 8 static new() { |
9 return new _isolate_helper.CapabilityImpl(); | 9 return new _isolate_helper.CapabilityImpl(); |
10 } | 10 } |
11 } | 11 } |
12 dart.setSignature(Capability, { | 12 dart.setSignature(Capability, { |
13 constructors: () => ({Capability: [Capability, []]}) | 13 constructors: () => ({new: [Capability, []]}) |
14 }); | 14 }); |
15 class IsolateSpawnException extends core.Object { | 15 class IsolateSpawnException extends core.Object { |
16 IsolateSpawnException(message) { | 16 IsolateSpawnException(message) { |
17 this.message = message; | 17 this.message = message; |
18 } | 18 } |
19 toString() { | 19 toString() { |
20 return `IsolateSpawnException: ${this.message}`; | 20 return `IsolateSpawnException: ${this.message}`; |
21 } | 21 } |
22 } | 22 } |
23 IsolateSpawnException[dart.implements] = () => [core.Exception]; | 23 IsolateSpawnException[dart.implements] = () => [core.Exception]; |
(...skipping 11 matching lines...) Expand all Loading... |
35 } | 35 } |
36 static get current() { | 36 static get current() { |
37 return Isolate._currentIsolateCache; | 37 return Isolate._currentIsolateCache; |
38 } | 38 } |
39 static spawn(entryPoint, message, opts) { | 39 static spawn(entryPoint, message, opts) { |
40 let paused = opts && 'paused' in opts ? opts.paused : false; | 40 let paused = opts && 'paused' in opts ? opts.paused : false; |
41 try { | 41 try { |
42 return dart.as(_isolate_helper.IsolateNatives.spawnFunction(entryPoint,
message, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), Se
ndPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCa
pability: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [core.Object])),
async.Future$(Isolate)); | 42 return dart.as(_isolate_helper.IsolateNatives.spawnFunction(entryPoint,
message, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), Se
ndPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCa
pability: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [core.Object])),
async.Future$(Isolate)); |
43 } catch (e) { | 43 } catch (e) { |
44 let st = dart.stackTrace(e); | 44 let st = dart.stackTrace(e); |
45 return new (async.Future$(Isolate)).error(e, st); | 45 return async.Future$(Isolate).error(e, st); |
46 } | 46 } |
47 | 47 |
48 } | 48 } |
49 static spawnUri(uri, args, message, opts) { | 49 static spawnUri(uri, args, message, opts) { |
50 let paused = opts && 'paused' in opts ? opts.paused : false; | 50 let paused = opts && 'paused' in opts ? opts.paused : false; |
51 let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null; | 51 let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null; |
52 if (packageRoot != null) | 52 if (packageRoot != null) |
53 throw new core.UnimplementedError("packageRoot"); | 53 throw new core.UnimplementedError("packageRoot"); |
54 try { | 54 try { |
55 if (dart.is(args, core.List)) { | 55 if (dart.is(args, core.List)) { |
56 for (let i = 0; dart.notNull(i) < dart.notNull(args[core.$length]); i
= dart.notNull(i) + 1) { | 56 for (let i = 0; dart.notNull(i) < dart.notNull(args[core.$length]); i
= dart.notNull(i) + 1) { |
57 if (!(typeof args[core.$get](i) == 'string')) { | 57 if (!(typeof args[core.$get](i) == 'string')) { |
58 throw new core.ArgumentError(`Args must be a list of Strings ${arg
s}`); | 58 throw new core.ArgumentError(`Args must be a list of Strings ${arg
s}`); |
59 } | 59 } |
60 } | 60 } |
61 } else if (args != null) { | 61 } else if (args != null) { |
62 throw new core.ArgumentError(`Args must be a list of Strings ${args}`)
; | 62 throw new core.ArgumentError(`Args must be a list of Strings ${args}`)
; |
63 } | 63 } |
64 return dart.as(_isolate_helper.IsolateNatives.spawnUri(uri, args, messag
e, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort
), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapabili
ty: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [core.Object])), async.
Future$(Isolate)); | 64 return dart.as(_isolate_helper.IsolateNatives.spawnUri(uri, args, messag
e, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort
), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapabili
ty: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [core.Object])), async.
Future$(Isolate)); |
65 } catch (e) { | 65 } catch (e) { |
66 let st = dart.stackTrace(e); | 66 let st = dart.stackTrace(e); |
67 return new (async.Future$(Isolate)).error(e, st); | 67 return async.Future$(Isolate).error(e, st); |
68 } | 68 } |
69 | 69 |
70 } | 70 } |
71 pause(resumeCapability) { | 71 pause(resumeCapability) { |
72 if (resumeCapability === void 0) | 72 if (resumeCapability === void 0) |
73 resumeCapability = null; | 73 resumeCapability = null; |
74 if (resumeCapability == null) | 74 if (resumeCapability == null) |
75 resumeCapability = new Capability(); | 75 resumeCapability = Capability.new(); |
76 this[_pause](resumeCapability); | 76 this[_pause](resumeCapability); |
77 return resumeCapability; | 77 return resumeCapability; |
78 } | 78 } |
79 [_pause](resumeCapability) { | 79 [_pause](resumeCapability) { |
80 let message = new core.List(3); | 80 let message = core.List.new(3); |
81 message[core.$set](0, "pause"); | 81 message[core.$set](0, "pause"); |
82 message[core.$set](1, this.pauseCapability); | 82 message[core.$set](1, this.pauseCapability); |
83 message[core.$set](2, resumeCapability); | 83 message[core.$set](2, resumeCapability); |
84 this.controlPort.send(message); | 84 this.controlPort.send(message); |
85 } | 85 } |
86 resume(resumeCapability) { | 86 resume(resumeCapability) { |
87 let message = new core.List(2); | 87 let message = core.List.new(2); |
88 message[core.$set](0, "resume"); | 88 message[core.$set](0, "resume"); |
89 message[core.$set](1, resumeCapability); | 89 message[core.$set](1, resumeCapability); |
90 this.controlPort.send(message); | 90 this.controlPort.send(message); |
91 } | 91 } |
92 addOnExitListener(responsePort) { | 92 addOnExitListener(responsePort) { |
93 let message = new core.List(2); | 93 let message = core.List.new(2); |
94 message[core.$set](0, "add-ondone"); | 94 message[core.$set](0, "add-ondone"); |
95 message[core.$set](1, responsePort); | 95 message[core.$set](1, responsePort); |
96 this.controlPort.send(message); | 96 this.controlPort.send(message); |
97 } | 97 } |
98 removeOnExitListener(responsePort) { | 98 removeOnExitListener(responsePort) { |
99 let message = new core.List(2); | 99 let message = core.List.new(2); |
100 message[core.$set](0, "remove-ondone"); | 100 message[core.$set](0, "remove-ondone"); |
101 message[core.$set](1, responsePort); | 101 message[core.$set](1, responsePort); |
102 this.controlPort.send(message); | 102 this.controlPort.send(message); |
103 } | 103 } |
104 setErrorsFatal(errorsAreFatal) { | 104 setErrorsFatal(errorsAreFatal) { |
105 let message = new core.List(3); | 105 let message = core.List.new(3); |
106 message[core.$set](0, "set-errors-fatal"); | 106 message[core.$set](0, "set-errors-fatal"); |
107 message[core.$set](1, this.terminateCapability); | 107 message[core.$set](1, this.terminateCapability); |
108 message[core.$set](2, errorsAreFatal); | 108 message[core.$set](2, errorsAreFatal); |
109 this.controlPort.send(message); | 109 this.controlPort.send(message); |
110 } | 110 } |
111 kill(priority) { | 111 kill(priority) { |
112 if (priority === void 0) | 112 if (priority === void 0) |
113 priority = Isolate.BEFORE_NEXT_EVENT; | 113 priority = Isolate.BEFORE_NEXT_EVENT; |
114 this.controlPort.send(["kill", this.terminateCapability, priority]); | 114 this.controlPort.send(["kill", this.terminateCapability, priority]); |
115 } | 115 } |
116 ping(responsePort, pingType) { | 116 ping(responsePort, pingType) { |
117 if (pingType === void 0) | 117 if (pingType === void 0) |
118 pingType = Isolate.IMMEDIATE; | 118 pingType = Isolate.IMMEDIATE; |
119 let message = new core.List(3); | 119 let message = core.List.new(3); |
120 message[core.$set](0, "ping"); | 120 message[core.$set](0, "ping"); |
121 message[core.$set](1, responsePort); | 121 message[core.$set](1, responsePort); |
122 message[core.$set](2, pingType); | 122 message[core.$set](2, pingType); |
123 this.controlPort.send(message); | 123 this.controlPort.send(message); |
124 } | 124 } |
125 addErrorListener(port) { | 125 addErrorListener(port) { |
126 let message = new core.List(2); | 126 let message = core.List.new(2); |
127 message[core.$set](0, "getErrors"); | 127 message[core.$set](0, "getErrors"); |
128 message[core.$set](1, port); | 128 message[core.$set](1, port); |
129 this.controlPort.send(message); | 129 this.controlPort.send(message); |
130 } | 130 } |
131 removeErrorListener(port) { | 131 removeErrorListener(port) { |
132 let message = new core.List(2); | 132 let message = core.List.new(2); |
133 message[core.$set](0, "stopErrors"); | 133 message[core.$set](0, "stopErrors"); |
134 message[core.$set](1, port); | 134 message[core.$set](1, port); |
135 this.controlPort.send(message); | 135 this.controlPort.send(message); |
136 } | 136 } |
137 get errors() { | 137 get errors() { |
138 let controller = null; | 138 let controller = null; |
139 let port = null; | 139 let port = null; |
140 let handleError = message => { | 140 let handleError = message => { |
141 let errorDescription = dart.as(dart.dindex(message, 0), core.String); | 141 let errorDescription = dart.as(dart.dindex(message, 0), core.String); |
142 let stackDescription = dart.as(dart.dindex(message, 1), core.String); | 142 let stackDescription = dart.as(dart.dindex(message, 1), core.String); |
143 let error = new RemoteError(errorDescription, stackDescription); | 143 let error = new RemoteError(errorDescription, stackDescription); |
144 controller.addError(error, error.stackTrace); | 144 controller.addError(error, error.stackTrace); |
145 }; | 145 }; |
146 dart.fn(handleError, dart.void, [core.Object]); | 146 dart.fn(handleError, dart.void, [core.Object]); |
147 controller = new async.StreamController.broadcast({sync: true, onListen: d
art.fn((() => { | 147 controller = async.StreamController.broadcast({sync: true, onListen: dart.
fn((() => { |
148 port = new RawReceivePort(handleError); | 148 port = RawReceivePort.new(handleError); |
149 this.addErrorListener(port.sendPort); | 149 this.addErrorListener(port.sendPort); |
150 }).bind(this)), onCancel: dart.fn((() => { | 150 }).bind(this)), onCancel: dart.fn((() => { |
151 this.removeErrorListener(port.sendPort); | 151 this.removeErrorListener(port.sendPort); |
152 port.close(); | 152 port.close(); |
153 port = null; | 153 port = null; |
154 }).bind(this))}); | 154 }).bind(this))}); |
155 return controller.stream; | 155 return controller.stream; |
156 } | 156 } |
157 } | 157 } |
158 dart.setSignature(Isolate, { | 158 dart.setSignature(Isolate, { |
(...skipping 20 matching lines...) Expand all Loading... |
179 Isolate.BEFORE_NEXT_EVENT = 1; | 179 Isolate.BEFORE_NEXT_EVENT = 1; |
180 Isolate.AS_EVENT = 2; | 180 Isolate.AS_EVENT = 2; |
181 dart.defineLazyProperties(Isolate, { | 181 dart.defineLazyProperties(Isolate, { |
182 get _currentIsolateCache() { | 182 get _currentIsolateCache() { |
183 return _isolate_helper.IsolateNatives.currentIsolate; | 183 return _isolate_helper.IsolateNatives.currentIsolate; |
184 } | 184 } |
185 }); | 185 }); |
186 class SendPort extends core.Object {} | 186 class SendPort extends core.Object {} |
187 SendPort[dart.implements] = () => [Capability]; | 187 SendPort[dart.implements] = () => [Capability]; |
188 class ReceivePort extends core.Object { | 188 class ReceivePort extends core.Object { |
189 ReceivePort() { | 189 static new() { |
190 return new _isolate_helper.ReceivePortImpl(); | 190 return new _isolate_helper.ReceivePortImpl(); |
191 } | 191 } |
192 fromRawReceivePort(rawPort) { | 192 static fromRawReceivePort(rawPort) { |
193 return new _isolate_helper.ReceivePortImpl.fromRawReceivePort(rawPort); | 193 return new _isolate_helper.ReceivePortImpl.fromRawReceivePort(rawPort); |
194 } | 194 } |
195 } | 195 } |
196 ReceivePort[dart.implements] = () => [async.Stream]; | 196 ReceivePort[dart.implements] = () => [async.Stream]; |
197 dart.defineNamedConstructor(ReceivePort, 'fromRawReceivePort'); | |
198 dart.setSignature(ReceivePort, { | 197 dart.setSignature(ReceivePort, { |
199 constructors: () => ({ | 198 constructors: () => ({ |
200 ReceivePort: [ReceivePort, []], | 199 new: [ReceivePort, []], |
201 fromRawReceivePort: [ReceivePort, [RawReceivePort]] | 200 fromRawReceivePort: [ReceivePort, [RawReceivePort]] |
202 }) | 201 }) |
203 }); | 202 }); |
204 class RawReceivePort extends core.Object { | 203 class RawReceivePort extends core.Object { |
205 RawReceivePort(handler) { | 204 static new(handler) { |
206 if (handler === void 0) | 205 if (handler === void 0) |
207 handler = null; | 206 handler = null; |
208 return new _isolate_helper.RawReceivePortImpl(handler); | 207 return new _isolate_helper.RawReceivePortImpl(handler); |
209 } | 208 } |
210 } | 209 } |
211 dart.setSignature(RawReceivePort, { | 210 dart.setSignature(RawReceivePort, { |
212 constructors: () => ({RawReceivePort: [RawReceivePort, [], [dart.functionTyp
e(dart.void, [dart.bottom])]]}) | 211 constructors: () => ({new: [RawReceivePort, [], [dart.functionType(dart.void
, [dart.bottom])]]}) |
213 }); | 212 }); |
214 class _IsolateUnhandledException extends core.Object { | 213 class _IsolateUnhandledException extends core.Object { |
215 _IsolateUnhandledException(message, source, stackTrace) { | 214 _IsolateUnhandledException(message, source, stackTrace) { |
216 this.message = message; | 215 this.message = message; |
217 this.source = source; | 216 this.source = source; |
218 this.stackTrace = stackTrace; | 217 this.stackTrace = stackTrace; |
219 } | 218 } |
220 toString() { | 219 toString() { |
221 return 'IsolateUnhandledException: exception while handling message: ' + `
${this.message} \n ` + `${dart.toString(this.source).replaceAll("\n", "\n ")}\
n` + 'original stack trace:\n ' + `${dart.toString(this.stackTrace).replaceAll(
"\n", "\n ")}`; | 220 return 'IsolateUnhandledException: exception while handling message: ' + `
${this.message} \n ` + `${dart.toString(this.source).replaceAll("\n", "\n ")}\
n` + 'original stack trace:\n ' + `${dart.toString(this.stackTrace).replaceAll(
"\n", "\n ")}`; |
222 } | 221 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 }); | 253 }); |
255 // Exports: | 254 // Exports: |
256 exports.Capability = Capability; | 255 exports.Capability = Capability; |
257 exports.IsolateSpawnException = IsolateSpawnException; | 256 exports.IsolateSpawnException = IsolateSpawnException; |
258 exports.Isolate = Isolate; | 257 exports.Isolate = Isolate; |
259 exports.SendPort = SendPort; | 258 exports.SendPort = SendPort; |
260 exports.ReceivePort = ReceivePort; | 259 exports.ReceivePort = ReceivePort; |
261 exports.RawReceivePort = RawReceivePort; | 260 exports.RawReceivePort = RawReceivePort; |
262 exports.RemoteError = RemoteError; | 261 exports.RemoteError = RemoteError; |
263 })(isolate, core, _isolate_helper, async); | 262 })(isolate, core, _isolate_helper, async); |
OLD | NEW |