package hu.bme.mit.incquery.cep.tests.evm.integration.evmspecific;
import hu.bme.mit.incquery.cep.api.evm.ObservedComplexEventPattern;
import java.util.Set;
import org.eclipse.incquery.runtime.evm.api.event.EventRealm;
import org.eclipse.incquery.runtime.evm.api.event.EventSource;
import org.eclipse.incquery.runtime.evm.api.event.EventSourceSpecification;
import com.google.common.collect.Sets;
public class CepEventSource implements EventSource<ObservedComplexEventPattern> {
private CepRealm realm;
private CepEventSourceSpecification specification;
private Set<CepEventHandler> handlers = Sets.newHashSet();
@Override
public EventSourceSpecification<ObservedComplexEventPattern> getSourceSpecification() {
return specification;
}
public CepEventSource(CepEventSourceSpecification specification, CepRealm realm) {
this.specification = specification;
this.realm = realm;
realm.addSource(this);
}
@Override
public EventRealm getRealm() {
return realm;
}
@Override
public void dispose() {}
public void addHandler(CepEventHandler handler) {
handlers.add(handler);
}
public void pushEvent(CepEventType type, ObservedComplexEventPattern op) {
CepEvent event = new CepEvent(type, op);
for (CepEventHandler handler : handlers) {
handler.handleEvent(event);
}
}
}