@Override public void run() { while (Pipe.hasContentToRead(input) && Pipe.hasRoomForWrite(output)) { int msgIn = Pipe.takeMsgIdx(input); if (msgIn<0) { Pipe.publishEOF(output); requestShutdown(); return; } int msgSize = Pipe.addMsgIdx(output, msgIn);//WARNING: using the same id as we just took in, inputType.convertToDecimal(blockSize, input, output); Pipe.confirmLowLevelWrite(output, msgSize); Pipe.publishWrites(output); Pipe.confirmLowLevelRead(input, Pipe.sizeOf(input, msgIn)); Pipe.releaseReadLock(input); } }
ConvertToDecimalStage<M> watch = new ConvertToDecimalStage(gm, result, result2);