Files
sdk/samples/sample_extension/sample_asynchronous_extension.dart
T
Ryan Macnak 49142b49e7 Revert "[gardening] mark sample_extension_test as error"
This reverts commit 679108ea7b.

Revert "Update 'samples/sample_extension' to Dart 2"

This reverts commit fba5a58b47.

Reason for revert: Broken app-kernel and app-reload bots

TBR=asiva@google.com,kathyw@google.com

Change-Id: I690694ec974fa316b25934a1f0f62b5e665a28ba
Reviewed-on: https://dart-review.googlesource.com/c/86800
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-10 19:37:33 +00:00

43 lines
1.1 KiB
Dart

// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library sample_asynchronous_extension;
import 'dart:async';
import 'dart:isolate';
import 'dart-ext:sample_extension';
// A class caches the native port used to call an asynchronous extension.
class RandomArray {
static SendPort _port;
Future<List<int>> randomArray(int seed, int length) {
var completer = new Completer();
var replyPort = new RawReceivePort();
var args = new List(3);
args[0] = seed;
args[1] = length;
args[2] = replyPort.sendPort;
_servicePort.send(args);
replyPort.handler = (result) {
replyPort.close();
if (result != null) {
completer.complete(result);
} else {
completer.completeError(new Exception("Random array creation failed"));
}
};
return completer.future;
}
SendPort get _servicePort {
if (_port == null) {
_port = _newServicePort();
}
return _port;
}
SendPort _newServicePort() native "RandomArray_ServicePort";
}