/** * Publishes the given events to interested subscribers. * * @param inEventsToPublish a <code>Deque<? extends Event></code> value */ private void publishEvents(Deque<? extends Event> inEventsToPublish) { SLF4JLoggerProxy.debug(SimulatedExchange.class, "{} publishing events: {}", //$NON-NLS-1$ this, inEventsToPublish); if(inEventsToPublish.isEmpty()) { return; } Event lastEvent = inEventsToPublish.getLast(); if(lastEvent instanceof HasEventType) { ((HasEventType)lastEvent).setEventType(EventType.UPDATE_FINAL); } for(Event event : inEventsToPublish) { publisher.publish(event); } } /**
/** * Reset the content cache if necessary. * * @param inContent a <code>Content</code> value * @param inEvent an <code>Event</code> value */ private void resetOnSnapshot(Content inContent, Event inEvent) { if(inEvent instanceof HasEventType) { HasEventType hasEventType = (HasEventType)inEvent; EventType eventType = hasEventType.getEventType(); if(eventType.isSnapshot()) { boolean resetOnSnapshot = resetOnSnapshotIndicator.getUnchecked(inContent); if(resetOnSnapshot) { SLF4JLoggerProxy.debug(this, "{} cache invalidating {} on {}", instrument, inContent, inEvent); invalidate(inContent); } } boolean resetFlag = eventType.isUpdate() || eventType.isComplete(); resetOnSnapshotIndicator.put(inContent, resetFlag); } } /**
if(lastEvent instanceof HasEventType) { HasEventType eventTypeEvent = (HasEventType)lastEvent; eventTypeEvent.setEventType(isSnapshot?EventType.SNAPSHOT_FINAL:EventType.UPDATE_FINAL);
if(snapshotEvent instanceof HasEventType) { HasEventType eventTypeSnapshot = (HasEventType)snapshotEvent; eventTypeSnapshot.setEventType(EventType.SNAPSHOT_FINAL);