private static void readClassMetadata()

in test-discovery/src/com/intellij/rt/coverage/data/api/TestDiscoveryProtocolUtil.java [103:127]


  private static void readClassMetadata(DataInputStream input, TestDiscoveryProtocolReader reader) throws IOException {
    TestDiscoveryProtocolReader.ClassMetadataReader metadataReader = reader.createClassMetadataReader();
    int classesCount = CoverageIOUtil.readINT(input);
    if (classesCount == 0) return;
    while (classesCount-- > 0) {
      final int classId = CoverageIOUtil.readINT(input);
      if (metadataReader != null) metadataReader.classStarted(classId);
      int filesCount = CoverageIOUtil.readINT(input);
      while (filesCount-- > 0) {
        final int fileId = CoverageIOUtil.readINT(input);
        if (metadataReader != null) metadataReader.file(fileId);
      }
      int methodsCount = CoverageIOUtil.readINT(input);
      while (methodsCount-- > 0) {
        final int methodId = CoverageIOUtil.readINT(input);
        final int hashLength = CoverageIOUtil.readINT(input);
        final byte[] hash = new byte[hashLength];
        final int read = input.read(hash);
        assert read == hashLength;
        if (metadataReader != null) metadataReader.method(methodId, hash);
      }
      if (metadataReader != null) metadataReader.classFinished(classId);
    }
    if (metadataReader != null) metadataReader.finished();
  }