public static void consume(Pipe<PersistedBlobStoreProducerSchema> input) { while (PipeReader.tryReadFragment(input)) { int msgIdx = PipeReader.getMsgIdx(input); switch(msgIdx) { case MSG_BLOCK_1: consumeBlock(input); break; case -1: //requestShutdown(); break; } PipeReader.releaseReadLock(input); } }
private void emptyReplayImpl(boolean encryption, boolean telemetry) { Pipe<PersistedBlobStoreProducerSchema> perStoreProducer = PersistedBlobStoreProducerSchema.instance.newPipe(10, 1000); Pipe<PersistedBlobStoreConsumerSchema> perStoreConsumer = PersistedBlobStoreConsumerSchema.instance.newPipe(10, 1000); perStoreProducer.initBuffers(); perStoreConsumer.initBuffers(); PipeWriter.presumeWriteFragment(perStoreConsumer, PersistedBlobStoreConsumerSchema.MSG_REQUESTREPLAY_6); PipeWriter.publishWrites(perStoreConsumer); PipeWriter.publishEOF(perStoreConsumer); String result = runGraph(perStoreProducer, perStoreConsumer, encryption, telemetry); assertTrue(result, result.indexOf("BeginReplay")>0); assertTrue(result, result.indexOf("FinishReplay")>0); }
private void writeWithAckImpl(boolean encryption, boolean telemetry) { Pipe<PersistedBlobStoreProducerSchema> perStoreProducer = PersistedBlobStoreProducerSchema.instance.newPipe(10, 1000); Pipe<PersistedBlobStoreConsumerSchema> perStoreConsumer = PersistedBlobStoreConsumerSchema.instance.newPipe(10, 1000); perStoreProducer.initBuffers(); perStoreConsumer.initBuffers(); long fieldBlockId = 10; byte[] fieldByteArrayBacking = "hello".getBytes(); int fieldByteArrayPosition = 0; int fieldByteArrayLength = fieldByteArrayBacking.length; PipeWriter.presumeWriteFragment(perStoreProducer, PersistedBlobStoreProducerSchema.MSG_BLOCK_1); PipeWriter.writeLong(perStoreProducer,PersistedBlobStoreProducerSchema.MSG_BLOCK_1_FIELD_BLOCKID_3, fieldBlockId); PipeWriter.writeBytes(perStoreProducer,PersistedBlobStoreProducerSchema.MSG_BLOCK_1_FIELD_BYTEARRAY_2, fieldByteArrayBacking, fieldByteArrayPosition, fieldByteArrayLength); PipeWriter.publishWrites(perStoreProducer); PipeWriter.publishEOF(perStoreConsumer); String result = runGraph(perStoreProducer, perStoreConsumer, encryption, telemetry); assertTrue(result, result.indexOf("AckWrite")>0); assertTrue(result, result.indexOf("{\"BlockId\":10}")>0); }
PersistedBlobStoreConsumerSchema.instance.newPipe(maxInFlightCount, 0); Pipe<PersistedBlobStoreProducerSchema> toStoreProducer = PersistedBlobStoreProducerSchema.instance.newPipe(maxInFlightCount, largestBlock);
private void writeAndReadImpl(boolean encryption, boolean telemetry) { Pipe<PersistedBlobStoreProducerSchema> perStoreProducer = PersistedBlobStoreProducerSchema.instance.newPipe(10, 1000); Pipe<PersistedBlobStoreConsumerSchema> perStoreConsumer = PersistedBlobStoreConsumerSchema.instance.newPipe(10, 1000); perStoreProducer.initBuffers(); perStoreConsumer.initBuffers(); byte[] fieldByteArrayBacking = "hello".getBytes(); int fieldByteArrayLength = fieldByteArrayBacking.length; PipeWriter.presumeWriteFragment(perStoreProducer, PersistedBlobStoreProducerSchema.MSG_BLOCK_1); PipeWriter.writeLong(perStoreProducer,PersistedBlobStoreProducerSchema.MSG_BLOCK_1_FIELD_BLOCKID_3, (long) 10); PipeWriter.writeBytes(perStoreProducer,PersistedBlobStoreProducerSchema.MSG_BLOCK_1_FIELD_BYTEARRAY_2, fieldByteArrayBacking, 0, fieldByteArrayLength); PipeWriter.publishWrites(perStoreProducer); PipeWriter.presumeWriteFragment(perStoreConsumer, PersistedBlobStoreConsumerSchema.MSG_REQUESTREPLAY_6); PipeWriter.publishWrites(perStoreConsumer); PipeWriter.publishEOF(perStoreConsumer); //ensure that the parts do not shut down before we are done PipeWriter.publishEOF(perStoreProducer); String result = runGraph(perStoreProducer, perStoreConsumer, encryption, telemetry); assertTrue(result, result.indexOf("AckWrite")>0); assertTrue(result, result.indexOf("{\"BlockId\":10}")>0); assertTrue(result, result.indexOf("0x68,0x65,0x6c,0x6c,0x6f")>0); assertTrue(result, result.indexOf("FinishReplay")>0); }
private void writeReleaseAndReadImpl(boolean encryption, boolean telemetry) { Pipe<PersistedBlobStoreProducerSchema> perStoreProducer = PersistedBlobStoreProducerSchema.instance.newPipe(10, 1000); Pipe<PersistedBlobStoreConsumerSchema> perStoreConsumer = PersistedBlobStoreConsumerSchema.instance.newPipe(10, 1000);
Pipe<PersistedBlobStoreProducerSchema> persistanceProducerPipe = PersistedBlobStoreProducerSchema.instance.newPipe(maxInFlight, maximumLenghOfVariableLengthFields);