private long processHeaderLogic(int i, final int memoIdx, final int stateIdx, Pipe<NetPayloadSchema> localInputPipe,
HTTPClientConnection cc, DataOutputBlobWriter<NetResponseSchema> writer) {
long headerToken;
int startingLength = TrieParserReader.savePositionMemo(trieReader, positionMemoData, memoIdx);
headerToken = TrieParserReader.parseNext(trieReader, cc.headerParser());
assert(headerToken==-1 || headerToken>=(Integer.MAX_VALUE-2)) : "bad token "+headerToken;
int consumed = startingLength - trieReader.sourceLen;
runningHeaderBytes[i] += consumed;
if (headerToken != -1) {
if (HTTPSpecification.END_OF_HEADER_ID != headerToken) {
headerProcessing(i, writer, headerToken, cc);
} else {
endOfHeaderProcessing(i, memoIdx, stateIdx, localInputPipe, writer);
}
}
return headerToken;
}