@NotNull @Override public ChangeStreamIterable<Document> watch() { return db.watch(); }
@NotNull @Override public <TResult> ChangeStreamIterable<TResult> watch(@NotNull Class<TResult> tResultClass) { return db.watch(tResultClass); }
@NotNull @Override public ChangeStreamIterable<Document> watch(@NotNull ClientSession clientSession) { return db.watch(clientSession); }
@NotNull @Override public ChangeStreamIterable<Document> watch(@NotNull ClientSession clientSession, @NotNull List<? extends Bson> pipeline) { return db.watch(clientSession, pipeline); }
@NotNull @Override public ChangeStreamIterable<Document> watch(@NotNull List<? extends Bson> pipeline) { return db.watch(pipeline); }
@NotNull @Override public <TResult> ChangeStreamIterable<TResult> watch(@NotNull List<? extends Bson> pipeline, @NotNull Class<TResult> tResultClass) { return db.watch(pipeline, tResultClass); }
@NotNull @Override public <TResult> ChangeStreamIterable<TResult> watch(@NotNull ClientSession clientSession, @NotNull Class<TResult> tResultClass) { return db.watch(clientSession, tResultClass); }
@NotNull @Override public <TResult> ChangeStreamIterable<TResult> watch(@NotNull ClientSession clientSession, @NotNull List<? extends Bson> pipeline, @NotNull Class<TResult> tResultClass) { return db.watch(clientSession, pipeline, tResultClass); } }
@Override public void watch(String db, String collection, int maxWaitTime, boolean fullDocumentOnUpdate, DriverTailableIterationCallback cb) throws MorphiumDriverException { DriverHelper.doCall(() -> { boolean run = true; while (run) { ChangeStreamIterable<Document> it = null; if (collection != null) { it = mongo.getDatabase(db).getCollection(collection).watch(); } else { it = mongo.getDatabase(db).watch(); } it.maxAwaitTime(maxWaitTime, TimeUnit.MILLISECONDS); it.batchSize(defaultBatchSize); it.fullDocument(fullDocumentOnUpdate ? FullDocument.UPDATE_LOOKUP : FullDocument.DEFAULT); // it.startAtOperationTime(new BsonTimestamp(System.currentTimeMillis()-250)); MongoCursor<ChangeStreamDocument<Document>> iterator = it.iterator(); long start = System.currentTimeMillis(); while (iterator.hasNext() && run) { run = processChangeStreamEvent(cb, iterator, start); if (!run) break; } iterator.close(); } return null; }, retriesOnNetworkError, sleepBetweenErrorRetries); }