/* * ************************************************************************************* * Copyright (C) 2008 EsperTech, Inc. All rights reserved. * * http://esper.codehaus.org * * 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.client.dataflow; /** * Data flow instanve. */ public interface EPDataFlowInstance { /** * Returns the data flow name. * @return name */ public String getDataFlowName(); /** * Returns the state. * @return state */ public EPDataFlowState getState(); /** * Blocking execution of the data flow instance. * @throws IllegalStateException thrown to indicate that the state is not instantiated. * @throws EPDataFlowExecutionException thrown when an execution exception occurs * @throws EPDataFlowCancellationException throw to indicate the data flow was cancelled. */ public void run() throws IllegalStateException, EPDataFlowExecutionException, EPDataFlowCancellationException; /** * Non-Blocking execution of the data flow instance. * @throws IllegalStateException thrown to indicate that the state is not instantiated. */ public void start() throws IllegalStateException; /** * Captive execution of the data flow instance. * @return runnables and emitters */ public EPDataFlowInstanceCaptive startCaptive(); /** * Join an executing data flow instance. * @throws IllegalStateException thrown if it cannot be joined * @throws InterruptedException thrown if interrupted */ public void join() throws IllegalStateException, InterruptedException; /** * Cancel execution. */ public void cancel(); /** * Get data flow instance statistics, required instantiation with statistics option, use {@link EPDataFlowInstantiationOptions} to turn on stats. * @return stats */ public EPDataFlowInstanceStatistics getStatistics(); /** * Returns the user object associated, if any. Use {@link EPDataFlowInstantiationOptions} to associate. * @return user object */ public Object getUserObject(); /** * Returns the instance id associated, if any. Use {@link EPDataFlowInstantiationOptions} to associate. * @return instance if */ public String getInstanceId(); }