// 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> randomArray(int seed, int length) { var completer = new Completer>(); var replyPort = new RawReceivePort(); var args = [seed, length, 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"; }