TimeUnit timeUnit) throws InterruptedException { if (privateIterator == null) { privateStream = storageEngine().readEvents(lastToken, false); privateIterator = privateStream.iterator();
private boolean fetchData() { Node currentNewest = newest; if (!tailingConsumers.isEmpty()) { try { eventStream = storageEngine().readEvents(lastToken(), true); eventStream.forEach(event -> { Node node = new Node(nextIndex(), lastToken(), event); if (newest != null) { newest.next = node; } newest = node; if (oldest == null) { oldest = node; } notifyConsumers(); trimCache(); }); } catch (Exception e) { logger.error("Failed to read events from the underlying event storage", e); } } return !Objects.equals(newest, currentNewest); }
private TrackedEventMessage<?> peekPrivateStream(boolean allowSwitchToTailingConsumer, int timeout, TimeUnit timeUnit) throws InterruptedException { if (privateIterator == null) { privateStream = storageEngine().readEvents(lastToken, false); privateIterator = privateStream.iterator(); } if (privateIterator.hasNext()) { TrackedEventMessage<?> nextEvent = privateIterator.next(); lastToken = nextEvent.trackingToken(); return nextEvent; } else if (allowSwitchToTailingConsumer) { closePrivateStream(); lastNode = findNode(lastToken); tailingConsumers.add(this); ensureProducerStarted(); return timeout > 0 ? peek(timeout, timeUnit) : null; } else { consumerLock.lock(); try { if (consumableEventsCondition.await(timeout, timeUnit) && privateIterator.hasNext()) { TrackedEventMessage<?> nextEvent = privateIterator.next(); lastToken = nextEvent.trackingToken(); return nextEvent; } return null; } finally { consumerLock.unlock(); } } }
TimeUnit timeUnit) throws InterruptedException { if (privateIterator == null) { privateStream = storageEngine().readEvents(lastToken, false); privateIterator = privateStream.iterator();
private boolean fetchData() { Node currentNewest = newest; if (!tailingConsumers.isEmpty()) { try { eventStream = storageEngine().readEvents(lastToken(), true); eventStream.forEach(event -> { Node node = new Node(nextIndex(), lastToken(), event); if (newest != null) { newest.next = node; } newest = node; if (oldest == null) { oldest = node; } notifyConsumers(); trimCache(); }); } catch (Exception e) { logger.error("Failed to read events from the underlying event storage", e); } } return !Objects.equals(newest, currentNewest); }
private boolean fetchData() { Node currentNewest = newest; if (!tailingConsumers.isEmpty()) { try { eventStream = storageEngine().readEvents(lastToken(), true); eventStream.forEach(event -> { Node node = new Node(nextIndex(), lastToken(), event); if (newest != null) { newest.next = node; } newest = node; if (oldest == null) { oldest = node; } notifyConsumers(); trimCache(); }); } catch (Exception e) { logger.error("Failed to read events from the underlying event storage", e); } } return !Objects.equals(newest, currentNewest); }