boot<I, O, CR> static method

Future<ProcessGroup<I, O, CR>> boot<I, O, CR>(
  1. Future<CR> setupProcess(),
  2. Future<O> processInput(
    1. I input,
    2. CR commonResourceRecord
    ),
  3. Future<void> shutdownProcess(
    1. CR commonResourceRecord
    ), [
  4. int? numberOfProcesses,
])

Boots up a new ProcessGroup instance.

Implementation

static Future<ProcessGroup<I, O, CR>> boot<I, O, CR>(
  Future<CR> Function() setupProcess,
  Future<O> Function(I input, CR commonResourceRecord) processInput,
  Future<void> Function(CR commonResourceRecord) shutdownProcess, [
  int? numberOfProcesses,
]) async {
  numberOfProcesses ??= Platform.numberOfProcessors;

  var processGroup = await Future.wait(
    List.generate(
      numberOfProcesses,
      (_) => Process.boot(setupProcess, processInput, shutdownProcess),
    ),
  );

  return ProcessGroup._(setupProcess, processInput, shutdownProcess, processGroup);
}