private void getDeltas(OperationContext context, WaveletName waveletName, ParticipantId participant, HashedVersion fromVersion, HashedVersion toVersion, RawDeltasListener listener) throws InvalidRequestException { final List<byte[]> deltaBytes = new LinkedList<byte[]>(); final AtomicReference<HashedVersion> version = new AtomicReference<HashedVersion>(); final AtomicInteger length = new AtomicInteger(0); context.getDeltas(waveletName, participant, fromVersion, toVersion, new Receiver<TransformedWaveletDelta>() { @Override public boolean put(TransformedWaveletDelta delta) { ProtocolWaveletDelta protoDelta = CoreWaveletOperationSerializer.serialize(delta); byte[] bytes = protoDelta.toByteArray(); deltaBytes.add(bytes); version.set(delta.getResultingVersion()); return length.addAndGet(bytes.length) < GET_HISTORY_BYTES_LENGTH_LIMIT; } }); listener.onSuccess(deltaBytes, CoreWaveletOperationSerializer.serialize(version.get()).toByteArray()); }