Skip to content

Instantly share code, notes, and snippets.

@dmundt
Created November 5, 2012 15:57
Show Gist options
  • Save dmundt/4017958 to your computer and use it in GitHub Desktop.
Save dmundt/4017958 to your computer and use it in GitHub Desktop.
Dart: Isolate Wrapper
import 'dart:isolate';
import 'dart:mirrors';
class IsolateWrapper {
SendPort _sender;
IsolateWrapper(this._sender);
// noSuchMethod(name, args){
// return _sender.call([name, args]);
// }
Future<num> compute(num value) => _sender.call(['compute', [value]]);
}
class Test {
num compute(num value) {
return value + 1;
}
}
childIsolate() {
port.receive((msg, replyTo) {
var mirror = reflect(new Test());
mirror.invoke(msg[0], msg[1]).then((mirror) {
if (replyTo != null) {
replyTo.send(mirror.reflectee);
}
});
});
}
main() {
var sender = spawnFunction(childIsolate);
// sender.call(['compute', [42]]).then((num result) {
// print('result: $result');
// });
var wrapper = new IsolateWrapper(sender);
wrapper.compute(42).then((num result) {
print('result: $result');
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment