Future<int> start()

//

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;
  }
}