2023-11-19 02:12:44 +03:00
|
|
|
|
package Visual_DVM_2021.Passes.SSH;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import Common.Current;
|
|
|
|
|
|
import Common.Global;
|
2024-01-08 20:37:16 +03:00
|
|
|
|
import Common.Utils.Utils;
|
|
|
|
|
|
import GlobalData.RemoteFile.RemoteFile;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import GlobalData.Tasks.Supervisor.Remote.RemoteTaskSupervisor;
|
|
|
|
|
|
public abstract class TaskConnectionPass<S extends RemoteTaskSupervisor> extends ConnectionPass {
|
|
|
|
|
|
public S supervisor; //инициализация идет в конструкторе потомка.
|
|
|
|
|
|
public TaskConnectionPass(Class<S> s_class) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
supervisor = s_class.newInstance();
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
Global.Log.PrintException(e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected boolean needsAnimation() {
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void Connect() throws Exception {
|
|
|
|
|
|
machine = supervisor.task.getMachine();
|
|
|
|
|
|
user = supervisor.task.getUser();
|
|
|
|
|
|
super.Connect();
|
2024-05-21 23:48:01 +03:00
|
|
|
|
user.connection.CheckUserInitialization(Current.getAccount().email);
|
|
|
|
|
|
/*
|
2024-01-08 20:37:16 +03:00
|
|
|
|
RemoteFile userWorkspace = new RemoteFile(user.workspace, true);
|
|
|
|
|
|
if (!user.connection.Exists(userWorkspace))
|
|
|
|
|
|
throw new WorkspaceNotFoundException(
|
|
|
|
|
|
"Рабочее пространство пользователя " + Utils.Brackets(user.login)
|
|
|
|
|
|
+ " на машине " + Utils.Brackets(machine.getURL())
|
|
|
|
|
|
+ "\n" + Utils.Brackets(user.workspace) + "\nне найдено.\n" +
|
|
|
|
|
|
"Требуется выполнить повторную инициализацию пользователя."
|
|
|
|
|
|
);
|
2024-05-21 23:48:01 +03:00
|
|
|
|
*/
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void ServerAction() throws Exception {
|
|
|
|
|
|
supervisor.PerformTask();
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void performFinish() throws Exception {
|
|
|
|
|
|
supervisor.UpdateTask();
|
|
|
|
|
|
super.performFinish(); //disconnect
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void Interrupt() throws Exception {
|
|
|
|
|
|
Current.getProject().CreateInterruptFile();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|