package hu.bme.mit.incquery.cep.streams;
import hu.bme.mit.incquery.cep.api.runtime.EventModelManager;
import java.util.List;
import com.google.common.collect.Lists;
public class DefaultStreamManager implements IStreamManager {
private static IStreamManager instance;
private EventModelManager listener;
private static final int MAX_STREAMS = 1;
private List<EventStream> eventStreams = Lists.newArrayList();
public static IStreamManager getInstance(EventModelManager eventModelManager) {
if (instance == null) {
instance = new DefaultStreamManager(eventModelManager);
}
return instance;
}
private DefaultStreamManager(EventModelManager eventModelManager) {
this.listener = eventModelManager;
}
@Override
public EventStream newEventStream() {
if (eventStreams.isEmpty() || eventStreams.size() < MAX_STREAMS) {
EventStream newEventStream = new EventStream();
eventStreams.add(newEventStream);
listener.registerNewEventStream(newEventStream);
return newEventStream;
}
// here some intelligence should be included to select the appropriate stream
return eventStreams.get(0);
}
@Override
public List<EventStream> getEventStreams() {
return eventStreams;
}
}