//
Source
Future<int> start() async {
prepare();
var replacements = {
"PACKAGE_NAME": packageName,
"LIBRARY_NAME": libraryName,
"SINK_TYPE": requestSinkType,
"PORT": port,
"ADDRESS": address,
"IPV6_ONLY": ipv6Only,
"NUMBER_OF_ISOLATES": numberOfIsolates,
"CONFIGURATION_FILE_PATH": configurationFile.path,
"SSL_KEY_PATH": keyPath,
"SSL_CERTIFICATE_PATH": certificatePath
};
displayInfo("Starting application '$packageName/$libraryName'");
displayProgress("Sink Type: $requestSinkType");
displayProgress("Config: ${configurationFile?.path}");
displayProgress("Port: $port");
var generatedStartScript = createScriptSource(replacements);
if (monitorStartup) {
return startWithMonitor(generatedStartScript);
} else {
var dataUri = Uri.parse(
"data:application/dart;charset=utf-8,${Uri.encodeComponent(generatedStartScript)}");
var completer = new Completer<int>();
var receivePort = new ReceivePort();
receivePort.listen((_) {
completer.complete(0);
});
await Isolate.spawnUri(dataUri, [], null,
onExit: receivePort.sendPort,
packageConfig: fileInProjectDirectory(".packages").uri);
return completer.future;
}
}