/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
***************************************************************************************
*/
package com.espertech.esper.core.service;
import com.espertech.esper.client.EPServiceProvider;
import com.espertech.esper.client.EPStatementStateListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Iterator;
/**
* Dispatcher for statement lifecycle events to service provider statement state listeners.
*/
public class StatementEventDispatcherUnthreaded implements StatementLifecycleObserver {
private static Logger log = LoggerFactory.getLogger(StatementEventDispatcherUnthreaded.class);
private final EPServiceProvider serviceProvider;
private final Iterable<EPStatementStateListener> statementListeners;
/**
* Ctor.
*
* @param serviceProvider engine instance
* @param statementListeners listeners to dispatch to
*/
public StatementEventDispatcherUnthreaded(EPServiceProvider serviceProvider, Iterable<EPStatementStateListener> statementListeners) {
this.serviceProvider = serviceProvider;
this.statementListeners = statementListeners;
}
public void observe(StatementLifecycleEvent theEvent) {
if (theEvent.getEventType() == StatementLifecycleEvent.LifecycleEventType.CREATE) {
Iterator<EPStatementStateListener> it = statementListeners.iterator();
for (; it.hasNext(); ) {
try {
it.next().onStatementCreate(serviceProvider, theEvent.getStatement());
} catch (RuntimeException ex) {
log.error("Caught runtime exception in onStatementCreate callback:" + ex.getMessage(), ex);
}
}
} else if (theEvent.getEventType() == StatementLifecycleEvent.LifecycleEventType.STATECHANGE) {
Iterator<EPStatementStateListener> it = statementListeners.iterator();
for (; it.hasNext(); ) {
try {
it.next().onStatementStateChange(serviceProvider, theEvent.getStatement());
} catch (RuntimeException ex) {
log.error("Caught runtime exception in onStatementCreate callback:" + ex.getMessage(), ex);
}
}
}
}
}