in test-discovery/src/com/intellij/rt/coverage/data/api/TestDiscoveryProtocolUtil.java [34:90]
public static void readSequentially(InputStream testDiscoveryDataStream,
TestDiscoveryProtocolReader reader) throws IOException {
DataInputStream input = new DataInputStream(testDiscoveryDataStream);
boolean start = true;
Integer version = null;
while (true) {
final int read = input.read();
if (read == -1) {
reader.debug("stream ended before finish marker received");
input.close();
return;
}
byte msgType = (byte) read;
switch (msgType) {
case TestDiscoveryProtocolDataListener.START_MARKER:
byte v = input.readByte();
version = (int) v;
reader.testDiscoveryDataProcessingStarted(version);
reader.debug("start marker, format version: " + version);
break;
case TestDiscoveryProtocolDataListener.FINISH_MARKER:
reader.testDiscoveryDataProcessingFinished();
reader.debug("finish marker");
input.close();
return;
case TestDiscoveryProtocolDataListener.TEST_FINISHED_MARKER:
reader.debug("test data received");
assert version != null;
readTestData(input, reader, version);
break;
case TestDiscoveryProtocolDataListener.NAMES_DICTIONARY_PART_MARKER:
reader.debug("partial dictionary received");
readDictionary(input, reader);
break;
case TestDiscoveryProtocolDataListener.METADATA_MARKER:
reader.debug("metadata received");
readMetadata(input, reader);
break;
case TestDiscoveryProtocolDataListener.CLASS_METADATA_MARKER:
reader.debug("class metadata received");
readClassMetadata(input, reader);
break;
case SingleTrFileDiscoveryProtocolDataListener.HEADER_START:
final byte[] jtc = new byte[3];
if (!start) throw new IllegalStateException("File header is not expected here");
if (input.read(jtc) != 3) throw new IOException("Failed to read header fully");
if (!Arrays.equals(jtc, SingleTrFileDiscoveryProtocolDataListener.HEADER_TAIL))
reader.error("File header mismatch: I" + new String(jtc, "ASCII"));
reader.debug("file header");
break;
default:
reader.error(String.format("Unknown input: %2X", msgType));
}
start = false;
}
}