private void retryOperation(final AsyncBlock asyncBlock, final SingleResultCallback<List<RawBsonDocument>> callback) { if (resumeToken != null) { changeStreamOperation.startOperationTimeForResume(null); changeStreamOperation.resumeAfter(resumeToken); } changeStreamOperation.executeAsync(binding, new SingleResultCallback<AsyncBatchCursor<T>>() { @Override public void onResult(final AsyncBatchCursor<T> result, final Throwable t) { if (t != null) { callback.onResult(null, t); } else { wrapped = ((AsyncChangeStreamBatchCursor<T>) result).getWrapped(); binding.release(); // release the new change stream batch cursor's reference to the binding resumeableOperation(asyncBlock, callback); } } }); }
private void retryOperation(final AsyncBlock asyncBlock, final SingleResultCallback<List<RawBsonDocument>> callback) { if (resumeToken != null) { changeStreamOperation.startOperationTimeForResume(null); changeStreamOperation.resumeAfter(resumeToken); } changeStreamOperation.executeAsync(binding, new SingleResultCallback<AsyncBatchCursor<T>>() { @Override public void onResult(final AsyncBatchCursor<T> result, final Throwable t) { if (t != null) { callback.onResult(null, t); } else { wrapped = ((AsyncChangeStreamBatchCursor<T>) result).getWrapped(); binding.release(); // release the new change stream batch cursor's reference to the binding resumeableOperation(asyncBlock, callback); } } }); }