blob: 6d4b407e53cf8a50b26275acc489600b1bcb18c8 [file] [log] [blame]
/*
* Copyright (c) 2016, 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.
*/
/**
* @assertion void kill({
* int priority: BEFORE_NEXT_EVENT
* })
* Requests the isolate to shut down.
* The isolate is requested to terminate itself. The priority argument
* specifies when this must happen.
* The priority must be one of IMMEDIATE or BEFORE_NEXT_EVENT. The shutdown
* is performed at different times depending on the priority:
* IMMEDIATE: The isolate shuts down as soon as possible. Control messages
* are handled in order, so all previously sent control events from this
* isolate will all have been processed. The shutdown should happen no later
* than if sent with BEFORE_NEXT_EVENT. It may happen earlier if the system
* has a way to shut down cleanly at an earlier time, even during the
* execution of another event.
* BEFORE_NEXT_EVENT: The shutdown is scheduled for the next time control
* returns to the event loop of the receiving isolate, after the current event,
* and any already scheduled control events, are completed.
*
* @description Check that kill(IMMEDIATE) terminates the isolate, which waits
* for events.
*
*
* @author a.semenov@unipro.ru
*/
import "dart:isolate";
import "../../../Utils/expect.dart";
import "IsolateUtil.dart";
test() async {
ReceivePort onExit = new ReceivePort();
ErrorServer server = await ErrorServer.spawn(
onExit:onExit.sendPort,
errorsAreFatal:true
);
server.isolate.kill(priority:Isolate.immediate);
await onExit.first;
asyncEnd();
}
main() {
asyncStart();
test();
}