| Index: samples/sample_extension/sample_asynchronous_extension_no_autoscope.dart
|
| ===================================================================
|
| --- samples/sample_extension/sample_asynchronous_extension_no_autoscope.dart (revision 0)
|
| +++ samples/sample_extension/sample_asynchronous_extension_no_autoscope.dart (revision 0)
|
| @@ -0,0 +1,42 @@
|
| +// 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_no_autoscope;
|
| +
|
| +import 'dart:async';
|
| +import 'dart:isolate';
|
| +import 'dart-ext:sample_extension_no_autoscope';
|
| +
|
| +// 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";
|
| +}
|
|
|