/** * Gets the most recent snapshot for the given attributes. * * @param inInstrument an <code>Instrument</code> value * @param inContent a <code>Content</code> value * @param inProvider a <code>String</code> value or <code>null</code> * @return a <code>Deque<Event></code> value */ private Deque<Event> doGetSnapshot(Instrument inInstrument, Content inContent, String inProvider) { Event event = marketDataManager.requestMarketDataSnapshot(inInstrument, inContent, inProvider); if(event == null) { return new LinkedList<>(); } Deque<Event> eventsToReturn = Lists.newLinkedList(); if(event instanceof AggregateEvent) { eventsToReturn.addAll(((AggregateEvent)event).decompose()); } else { eventsToReturn.add(event); } return eventsToReturn; } /**
/** * Gets the requested page of the most recent snapshot for the given attribute. * * @param inInstrument an <code>Instrument</code> value * @param inContent a <code>Content</code> value * @param inProvider a <code>String</code> value or <code>null</code> * @param inPageRequest a <code>PageRequest</code> value * @return a <code>Deque<Event></code> value */ private Deque<Event> doGetSnapshotPage(Instrument inInstrument, Content inContent, String inProvider, PageRequest inPageRequest) { Event event = marketDataManager.requestMarketDataSnapshot(inInstrument, inContent, inProvider); if(event == null) { return new LinkedList<>(); } Deque<Event> eventsToReturn = Lists.newLinkedList(); if(event instanceof AggregateEvent) { eventsToReturn.addAll(((AggregateEvent)event).decompose()); } else { eventsToReturn.add(event); } // TODO pick out page return eventsToReturn; } /**
@Override public void publishTo(Object inData) { try(CloseableLock publishEventLock = CloseableLock.create(lock.writeLock())) { publishEventLock.lock(); updateTimestamp = System.currentTimeMillis(); if(!storeEvents) { return; } if(inData instanceof Event) { events.addFirst((Event)inData); } else if(inData instanceof AggregateEvent) { for(Event event : ((AggregateEvent)inData).decompose()) { events.addFirst(event); } } else if(inData instanceof Collection<?>) { Collection<?> collectionData = (Collection<?>)inData; for(Object data : collectionData) { publishTo(data); } } else { SLF4JLoggerProxy.warn(this, "Unknown data type: " + inData.getClass().getName()); // TODO message throw new UnsupportedOperationException(); } } } /**
if(event instanceof AggregateEvent) { AggregateEvent ae = (AggregateEvent)event; actualEvents.addAll(ae.decompose()); } else { actualEvents.add(event);