private void combineContentForSingleMessage(Pipe<PhastCodecSchema> localInput1, Pipe<RawDataSchema> localInput2, Pipe<RawDataSchema> localOutput, short[] lookup, DataOutputBlobWriter<RawDataSchema> localWriter, int size, int maxPerMsg, int outputMaxLen, boolean holdingReleaseReadLock, DataOutputBlobWriter<RawDataSchema> writer) { int localSum = 0; int avail = 0; while ( ( (avail = (outputMaxLen - writer.length())) >= maxPerMsg) && Pipe.hasContentToRead(localInput1)) { if (holdingReleaseReadLock) { Pipe.releaseReadLock(localInput1); holdingReleaseReadLock = false; } int msgIdx = Pipe.takeMsgIdx(localInput1); if (PhastCodecSchema.MSG_BLOBCHUNK_1000 != msgIdx) { localSum = writePackedFields(localSum, localInput1, localWriter, msgIdx, (int) lookup[msgIdx]); } else { localSum = writeByteData(localSum, localInput2, avail); } Pipe.confirmLowLevelRead(localInput1, Pipe.sizeOf(localInput1, msgIdx)); holdingReleaseReadLock = true; } assert(holdingReleaseReadLock); totalLongs += localSum; }