/* *************************************************************************************** * 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.example.terminal.jse.simulate; import com.espertech.esper.example.terminal.jse.event.BaseTerminalEvent; import java.util.List; /** * The main class to run the simulation and observe the ESP/CEP statements issueing notification to the registered * event processing agents (EPA) turning them to complex composite events that end up in the registered * TerminalComplexEventListener * <p/> * Run with "java -cp ... TerminalEventSimulator" (or see Ant build.xml file) or use Eclipse "Run" menu in the Eclipse * provided project. * <p/> * You may want to change the number of ITERATION, the SLEEP period between each iteration (ms) * and you may familiarize yourself with the Esper ESP/CEP statements in the TerminalEventProcessingAgent class * <p/> * It is also possible to place breakpoints and launch this in debug mode from your IDE to better understand * the execution flow (put breakpoints in the BaseTerminalEvent subclasses like CountPerTypeListener */ public class TerminalEventSimulator { private static final int ITERATION = 100; private static final int SLEEP = 2000; private final EventGenerator eventGenerator; private final TerminalEventProcessingAgent terminalEventProcessingAgent; public TerminalEventSimulator() { eventGenerator = new EventGenerator(); terminalEventProcessingAgent = new TerminalEventProcessingAgent(new TerminalComplexEventListener()); } public void sendEvents() throws InterruptedException { List<BaseTerminalEvent> eventsToSend = eventGenerator.generateBatch(); for (BaseTerminalEvent theEvent : eventsToSend) { terminalEventProcessingAgent.sendEvent(theEvent); } // Throttle the sender to roughly send a batch every SLEEP ms if (SLEEP > 0) { System.out.printf("\n\tSleeping %d ms\n", SLEEP); Thread.sleep(SLEEP); } } public static void main(String[] args) throws Exception { System.out.printf("TerminalEventSimulator starting %d iteration, sleep %d ms between\n", ITERATION, SLEEP); TerminalEventSimulator simulator = new TerminalEventSimulator(); for (int i = 0; i < ITERATION; i++) { simulator.sendEvents(); } System.out.println("TerminalEventSimulator ended"); } }