@Override public boolean hasWindowFor(long timestamp) { return getWindowFor(timestamp) != null; }
private void closeAndRemoveWindow(StreamWindow windowBucket) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); closeWindow(windowBucket); removeWindow(windowBucket); stopWatch.stop(); LOG.info("Removed {} in {} ms", windowBucket, stopWatch.getTime()); }
public void close() { synchronized (windowBuckets) { LOG.debug("Closing"); StopWatch stopWatch = new StopWatch(); stopWatch.start(); int count = 0; for (StreamWindow windowBucket : getWindows()) { count++; closeWindow(windowBucket); } windowBuckets.clear(); stopWatch.stop(); LOG.info("Closed {} windows in {} ms", count, stopWatch.getTime()); } } }
@Override public StreamWindow addNewWindow(long initialTime) { synchronized (windowBuckets) { if (!reject(initialTime)) { Long windowStartTime = TimePeriodUtils.formatMillisecondsByPeriod(initialTime, windowPeriod); Long windowEndTime = windowStartTime + TimePeriodUtils.getMillisecondsOfPeriod(windowPeriod); StreamWindow window = StreamWindowRepository.getSingletonInstance().createWindow(windowStartTime, windowEndTime, windowMargin); window.register(collector); addWindow(window); return window; } else { throw new IllegalStateException("Failed to create new window, as " + DateTimeUtil.millisecondsToHumanDateWithMilliseconds(initialTime) + " is too late, only allow timestamp after " + DateTimeUtil.millisecondsToHumanDateWithMilliseconds(rejectTime)); } } }
public void prepare(String streamId, StreamSortSpec streamSortSpecSpec, PartitionedEventCollector outputCollector) { this.windowManager = new StreamWindowManagerImpl( Period.parse(streamSortSpecSpec.getWindowPeriod()), streamSortSpecSpec.getWindowMargin(), PartitionedEventTimeOrderingComparator.INSTANCE, outputCollector); this.streamSortSpecSpec = streamSortSpecSpec; this.streamId = streamId; this.outputCollector = outputCollector; }