package com.shizhefei.task.tasks;
import com.shizhefei.mvc.IAsyncDataSource;
import com.shizhefei.mvc.IDataSource;
import com.shizhefei.mvc.RequestHandle;
import com.shizhefei.mvc.ResponseSender;
import com.shizhefei.task.IAsyncTask;
import com.shizhefei.task.ISuperTask;
import com.shizhefei.task.ITask;
import com.shizhefei.task.ResponseSenderCallback;
import com.shizhefei.task.TaskHelper;
class AsyncLinkTask<DATA> extends LinkTask<DATA> {
private final boolean isExeRefresh;
private ISuperTask<DATA> task;
public AsyncLinkTask(ISuperTask<DATA> task, boolean isExeRefresh) {
this.task = task;
this.isExeRefresh = isExeRefresh;
}
@Override
public RequestHandle execute(final ResponseSender<DATA> sender) throws Exception {
if (task instanceof ITask) {
return TaskHelper.createExecutor((ITask<DATA>) task, new ResponseSenderCallback<>(sender)).execute();
} else if (task instanceof IAsyncTask) {
return TaskHelper.createExecutor((IAsyncTask<DATA>) task, new ResponseSenderCallback<>(sender)).execute();
} else if (task instanceof IDataSource) {
return TaskHelper.createExecutor((IDataSource<DATA>) task, isExeRefresh, new ResponseSenderCallback<>(sender)).execute();
} else if (task instanceof IAsyncDataSource) {
return TaskHelper.createExecutor((IAsyncDataSource<DATA>) task, isExeRefresh, new ResponseSenderCallback<>(sender)).execute();
}
return null;
}
}