OLD | NEW |
| (Empty) |
1 var isolate; | |
2 (function(exports) { | |
3 'use strict'; | |
4 class Capability extends core.Object { | |
5 Capability() { | |
6 return new _isolate_helper.CapabilityImpl(); | |
7 } | |
8 } | |
9 class IsolateSpawnException extends core.Object { | |
10 IsolateSpawnException(message) { | |
11 this.message = message; | |
12 } | |
13 toString() { | |
14 return `IsolateSpawnException: ${this.message}`; | |
15 } | |
16 } | |
17 let _pause = Symbol('_pause'); | |
18 class Isolate extends core.Object { | |
19 Isolate(controlPort, opt$) { | |
20 let pauseCapability = opt$.pauseCapability === void 0 ? null : opt$.pauseC
apability; | |
21 let terminateCapability = opt$.terminateCapability === void 0 ? null : opt
$.terminateCapability; | |
22 this.controlPort = controlPort; | |
23 this.pauseCapability = pauseCapability; | |
24 this.terminateCapability = terminateCapability; | |
25 } | |
26 static get current() { | |
27 return dart.as(_currentIsolateCache, Isolate); | |
28 } | |
29 static spawn(entryPoint, message, opt$) { | |
30 let paused = opt$.paused === void 0 ? false : opt$.paused; | |
31 try { | |
32 return dart.as(_isolate_helper.IsolateNatives.spawnFunction(entryPoint,
message, paused).then(dart.closureWrap((msg) => new Isolate(dart.as(dart.dindex(
msg, 1), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability),
terminateCapability: dart.as(dart.dindex(msg, 3), Capability)}), "(List<dynamic>
) → dynamic")), async.Future$(Isolate)); | |
33 } catch (e) { | |
34 let st = dart.stackTrace(e); | |
35 return new async.Future.error(e, st); | |
36 } | |
37 | |
38 } | |
39 static spawnUri(uri, args, message, opt$) { | |
40 let paused = opt$.paused === void 0 ? false : opt$.paused; | |
41 let packageRoot = opt$.packageRoot === void 0 ? null : opt$.packageRoot; | |
42 if (packageRoot !== null) | |
43 throw new core.UnimplementedError("packageRoot"); | |
44 try { | |
45 if (dart.is(args, core.List$(core.String))) { | |
46 for (let i = 0; dart.notNull(i) < dart.notNull(args.length); i = dart.
notNull(i) + 1) { | |
47 if (!(typeof args.get(i) == string)) { | |
48 throw new core.ArgumentError(`Args must be a list of Strings ${arg
s}`); | |
49 } | |
50 } | |
51 } else if (args !== null) { | |
52 throw new core.ArgumentError(`Args must be a list of Strings ${args}`)
; | |
53 } | |
54 return dart.as(_isolate_helper.IsolateNatives.spawnUri(uri, args, messag
e, paused).then(dart.closureWrap((msg) => new Isolate(dart.as(dart.dindex(msg, 1
), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), termin
ateCapability: dart.as(dart.dindex(msg, 3), Capability)}), "(List<dynamic>) → dy
namic")), async.Future$(Isolate)); | |
55 } catch (e) { | |
56 let st = dart.stackTrace(e); | |
57 return new async.Future.error(e, st); | |
58 } | |
59 | |
60 } | |
61 pause(resumeCapability) { | |
62 if (resumeCapability === void 0) | |
63 resumeCapability = null; | |
64 if (resumeCapability === null) | |
65 resumeCapability = new Capability(); | |
66 this[_pause](resumeCapability); | |
67 return resumeCapability; | |
68 } | |
69 [_pause](resumeCapability) { | |
70 let message = new core.List(3); | |
71 dart.dsetindex(message, 0, "pause"); | |
72 dart.dsetindex(message, 1, this.pauseCapability); | |
73 dart.dsetindex(message, 2, resumeCapability); | |
74 this.controlPort.send(message); | |
75 } | |
76 resume(resumeCapability) { | |
77 let message = new core.List(2); | |
78 dart.dsetindex(message, 0, "resume"); | |
79 dart.dsetindex(message, 1, resumeCapability); | |
80 this.controlPort.send(message); | |
81 } | |
82 addOnExitListener(responsePort) { | |
83 let message = new core.List(2); | |
84 dart.dsetindex(message, 0, "add-ondone"); | |
85 dart.dsetindex(message, 1, responsePort); | |
86 this.controlPort.send(message); | |
87 } | |
88 removeOnExitListener(responsePort) { | |
89 let message = new core.List(2); | |
90 dart.dsetindex(message, 0, "remove-ondone"); | |
91 dart.dsetindex(message, 1, responsePort); | |
92 this.controlPort.send(message); | |
93 } | |
94 setErrorsFatal(errorsAreFatal) { | |
95 let message = new core.List(3); | |
96 dart.dsetindex(message, 0, "set-errors-fatal"); | |
97 dart.dsetindex(message, 1, this.terminateCapability); | |
98 dart.dsetindex(message, 2, errorsAreFatal); | |
99 this.controlPort.send(message); | |
100 } | |
101 kill(priority) { | |
102 if (priority === void 0) | |
103 priority = Isolate.BEFORE_NEXT_EVENT; | |
104 this.controlPort.send(new List.from(["kill", this.terminateCapability, pri
ority])); | |
105 } | |
106 ping(responsePort, pingType) { | |
107 if (pingType === void 0) | |
108 pingType = Isolate.IMMEDIATE; | |
109 let message = new core.List(3); | |
110 dart.dsetindex(message, 0, "ping"); | |
111 dart.dsetindex(message, 1, responsePort); | |
112 dart.dsetindex(message, 2, pingType); | |
113 this.controlPort.send(message); | |
114 } | |
115 addErrorListener(port) { | |
116 let message = new core.List(2); | |
117 dart.dsetindex(message, 0, "getErrors"); | |
118 dart.dsetindex(message, 1, port); | |
119 this.controlPort.send(message); | |
120 } | |
121 removeErrorListener(port) { | |
122 let message = new core.List(2); | |
123 dart.dsetindex(message, 0, "stopErrors"); | |
124 dart.dsetindex(message, 1, port); | |
125 this.controlPort.send(message); | |
126 } | |
127 get errors() { | |
128 let controller = null; | |
129 let port = null; | |
130 // Function handleError: (dynamic) → void | |
131 function handleError(message) { | |
132 let errorDescription = dart.as(dart.dindex(message, 0), core.String); | |
133 let stackDescription = dart.as(dart.dindex(message, 1), core.String); | |
134 let error = new RemoteError(errorDescription, stackDescription); | |
135 controller.addError(error, error.stackTrace); | |
136 } | |
137 controller = new async.StreamController.broadcast({sync: true, onListen: (
() => { | |
138 port = new RawReceivePort(handleError); | |
139 this.addErrorListener(port.sendPort); | |
140 }).bind(this), onCancel: (() => { | |
141 this.removeErrorListener(port.sendPort); | |
142 port.close(); | |
143 port = null; | |
144 }).bind(this)}); | |
145 return controller.stream; | |
146 } | |
147 } | |
148 Isolate.IMMEDIATE = 0; | |
149 Isolate.BEFORE_NEXT_EVENT = 1; | |
150 Isolate.AS_EVENT = 2; | |
151 dart.defineLazyProperties(Isolate, { | |
152 get _currentIsolateCache() { | |
153 return _isolate_helper.IsolateNatives.currentIsolate; | |
154 } | |
155 }); | |
156 class SendPort extends core.Object { | |
157 } | |
158 class ReceivePort extends core.Object { | |
159 ReceivePort() { | |
160 return new _isolate_helper.ReceivePortImpl(); | |
161 } | |
162 ReceivePort$fromRawReceivePort(rawPort) { | |
163 return new _isolate_helper.ReceivePortImpl.fromRawReceivePort(rawPort); | |
164 } | |
165 } | |
166 dart.defineNamedConstructor(ReceivePort, 'fromRawReceivePort'); | |
167 class RawReceivePort extends core.Object { | |
168 RawReceivePort(handler) { | |
169 if (handler === void 0) | |
170 handler = null; | |
171 return new _isolate_helper.RawReceivePortImpl(handler); | |
172 } | |
173 } | |
174 class _IsolateUnhandledException extends core.Object { | |
175 _IsolateUnhandledException(message, source, stackTrace) { | |
176 this.message = message; | |
177 this.source = source; | |
178 this.stackTrace = stackTrace; | |
179 } | |
180 toString() { | |
181 return 'IsolateUnhandledException: exception while handling message: ' + `
${this.message} \n ` + `${dart.dinvoke(dart.dinvoke(this.source, 'toString'), '
replaceAll', "\n", "\n ")}\n` + 'original stack trace:\n ' + `${this.stackTrac
e.toString().replaceAll("\n", "\n ")}`; | |
182 } | |
183 } | |
184 let _description = Symbol('_description'); | |
185 class RemoteError extends core.Object { | |
186 RemoteError(description, stackDescription) { | |
187 this[_description] = description; | |
188 this.stackTrace = new _RemoteStackTrace(stackDescription); | |
189 } | |
190 toString() { | |
191 return this[_description]; | |
192 } | |
193 } | |
194 let _trace = Symbol('_trace'); | |
195 class _RemoteStackTrace extends core.Object { | |
196 _RemoteStackTrace($_trace) { | |
197 this[_trace] = $_trace; | |
198 } | |
199 toString() { | |
200 return this[_trace]; | |
201 } | |
202 } | |
203 // Exports: | |
204 exports.Capability = Capability; | |
205 exports.IsolateSpawnException = IsolateSpawnException; | |
206 exports.Isolate = Isolate; | |
207 exports.SendPort = SendPort; | |
208 exports.ReceivePort = ReceivePort; | |
209 exports.RawReceivePort = RawReceivePort; | |
210 exports.RemoteError = RemoteError; | |
211 })(isolate || (isolate = {})); | |
OLD | NEW |