read static method

Implementation

static CompileAndSignResult? read(BinaryReader reader) {
  final moduleCount = reader.readVarUint();

  final modules = <CompiledModule>[];
  for (int i = 0; i < moduleCount; i++) {
    final name = reader.readString();
    final length = reader.readVarUint();
    final bytecode = reader.read(length);
    modules.add(CompiledModule(bytecode: bytecode, name: name));
  }

  final signatureLength = reader.readVarUint();
  Uint8List signature = reader.read(signatureLength);

  // Trailing shader-error section (written after the signature). Absent in
  // older responses, in which case the reader is already at EOF.
  final shaderErrors = <ShaderCompileError>[];
  if (!reader.isEOF) {
    final errorCount = reader.readVarUint();
    for (int i = 0; i < errorCount; i++) {
      final scriptName = reader.readString();
      final message = reader.readString();
      shaderErrors
          .add(ShaderCompileError(scriptName: scriptName, message: message));
    }
  }

  return CompileAndSignResult(
    modules: modules,
    signature: signature,
    shaderErrors: shaderErrors,
  );
}