/*
* *************************************************************************************
* 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();
}