package com.taobao.tddl.executor;
import java.util.concurrent.Future;
import com.taobao.tddl.common.exception.TddlException;
import com.taobao.tddl.common.model.lifecycle.Lifecycle;
import com.taobao.tddl.executor.common.ExecutionContext;
import com.taobao.tddl.executor.cursor.ISchematicCursor;
import com.taobao.tddl.executor.cursor.ResultCursor;
import com.taobao.tddl.optimizer.core.plan.IDataNodeExecutor;
/**
* 执行器 crud 与jdbc接口类似,原则上不要进行多线程操作。 而应该使用外部方式显示的 同步异步的各一套
*
* @author mengshi.sunmengshi 2013-11-27 下午3:02:29
* @since 5.0.0
*/
@SuppressWarnings("rawtypes")
public interface IExecutor extends Lifecycle {
/**
* 执行一个命令
*
* @param extraCmd
* @param qc
* @param args
* @return
* @throws Exception
*/
public ISchematicCursor execByExecPlanNode(IDataNodeExecutor qc, ExecutionContext executionContext)
throws TddlException;
public ResultCursor commit(ExecutionContext executionContext) throws TddlException;
public ResultCursor rollback(ExecutionContext executionContext) throws TddlException;
/**
* 执行一个命令
*
* @param extraCmd
* @param qc
* @param args
* @return
*/
public Future<ISchematicCursor> execByExecPlanNodeFuture(IDataNodeExecutor qc, ExecutionContext executionContext)
throws TddlException;
public Future<ResultCursor> commitFuture(ExecutionContext executionContext) throws TddlException;
public Future<ResultCursor> rollbackFuture(ExecutionContext executionContext) throws TddlException;
}