package uk.ac.imperial.lsds.seepworker.core.output; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import uk.ac.imperial.lsds.seep.api.DataReference; import uk.ac.imperial.lsds.seep.api.DataStore; import uk.ac.imperial.lsds.seep.api.DataStoreType; import uk.ac.imperial.lsds.seep.core.OBuffer; public class CoreOutput { final private static Logger LOG = LoggerFactory.getLogger(CoreOutput.class); private Map<Integer, Set<DataReference>> output; private Map<Integer, OBuffer> oBuffers; private Map<Integer, List<OBuffer>> streamId_To_OBuffers; public CoreOutput(Map<Integer, Set<DataReference>> output, Map<Integer, List<OBuffer>> streamId_To_OBuffers, Map<Integer, OBuffer> oBuffers){ this.output = output; this.oBuffers = oBuffers; this.streamId_To_OBuffers = streamId_To_OBuffers; LOG.info("Configured CoreOutput with {} outputAdapters", streamId_To_OBuffers.size()); } public Map<Integer, List<OBuffer>> getOutputAdapters() { return streamId_To_OBuffers; } public Map<Integer, List<OBuffer>> getStreamIdToBuffers() { return streamId_To_OBuffers; } public Map<Integer, OBuffer> getBuffers() { return oBuffers; } public Set<OBuffer> getOBufferToDataStoreOfType(DataStoreType dst) { Set<OBuffer> bufs = new HashSet<>(); for(Set<DataReference> set : output.values()) { for(DataReference dr : set) { if(dr.getDataStore().type().equals(dst)) { int id = dr.getId(); bufs.add(oBuffers.get(id)); } } } return bufs; } public boolean requiresConfigureSelectorOfType(DataStoreType type) { for(Set<DataReference> dres : output.values()) { for(DataReference dr : dres) { if(dr.getDataStore().type().equals(type)) { return true; } } } return false; } public Map<Integer, DataStore> getMapStreamIdToDataStore() { Map<Integer, DataStore> toReturn = new HashMap<>(); for(Set<DataReference> set : output.values()) { DataReference sample = set.iterator().next(); toReturn.put(sample.getId(), sample.getDataStore()); } return toReturn; } }