package com.alibaba.doris.dataserver.migrator.task;
import com.alibaba.doris.common.MigrateTypeEnum;
import com.alibaba.doris.common.migrate.NodeMigrateStatus;
import com.alibaba.doris.dataserver.migrator.action.MigrationActionData;
import com.alibaba.doris.dataserver.migrator.connection.ConnectionManager;
/*
* 迁移任务接口,抽象出所有迁移任务的对外公共接口;
* @author ajun Email:jack.yuj@alibaba-inc.com
*/
public interface MigrationTask {
/**
* 获取当前迁移任务的状态;
*
* @see NodeMigrateStatus
* @return
*/
public NodeMigrateStatus getMigrateStatus();
/**
* 获取当前迁移任务类型;
*
* @see MigrateTypeEnum
* @return
*/
public MigrateTypeEnum getMigrateType();
/**
* 设置当前任务的状态;
*
* @param b
*/
public void setFinish(boolean b);
/**
* 获取当前迁移任务的标识符,能够唯一标识当前任务的key;
*
* @return
*/
public String getTaskKey();
/**
* 获取当前task的名称;
*
* @return
*/
public String getTaskName();
/**
* 获取当前task的启动参数;
*
* @return
*/
public MigrationActionData getMigrationActionData();
/**
* 一次集群迁移整体结束,本Node回复NORMAL状态
*/
public void allFinish();
/**
* 准备启动迁移任务;
*/
public boolean prepareTask();
/**
* 通过信号量通知数据数据清理开始.
*/
public void dataCleanStart();
/**
* 检查任务是否已经取消
*
* @return
*/
public boolean isCancel();
/**
* 取消一个正在迁移的任务;
*/
public void cancel();
/**
* 检查任务是否完成;
*
* @return
*/
public boolean isFinished();
/**
* 执行数据清理
*/
public void dataClean();
/**
* 获取任务的迁移进度;返回0-100的值,返回-1表示迁移还未开始;
*
* @return
*/
public int getProgress();
/**
* 获取当前迁移任务的启动时间;
*
* @return
*/
public long getStartTime();
/**
* 获取指定vnode是否属于当前迁移任务范围内的vnode;
*
* @return
*/
public String getProxyTarget(int vnode);
/**
* 获取当前task对应的代理节点的连接;
*
* @return
*/
public ConnectionManager getConnectionManager();
}