/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.wrapper.impl;
import java.io.IOException;
import de.rcenvironment.core.component.wrapper.sandboxed.ExecutionEnvironment;
import de.rcenvironment.core.component.wrapper.sandboxed.SandboxBehaviour;
import de.rcenvironment.core.utils.executor.CommandLineExecutor;
/**
* A sandbox behaviour where a new sandbox directory is created before the first run of the wrapped
* executable, and reused without modifications for all subsequent runs.
*
* @author Robert Mischke
*
*/
public class ContinuousReuseSandboxBehaviour implements SandboxBehaviour {
private CommandLineExecutor reusableExecutor;
private ExecutionEnvironment executionEnvironment;
public ContinuousReuseSandboxBehaviour(ExecutionEnvironment executionEnvironment) {
this.executionEnvironment = executionEnvironment;
}
@Override
public CommandLineExecutor setupSingleRun() throws IOException {
// only create one durable executor and sandbox
if (reusableExecutor == null) {
reusableExecutor = executionEnvironment.setupExecutorWithSandbox();
}
return reusableExecutor;
}
@Override
public void afterSingleRun(CommandLineExecutor executor)
throws IOException {
// NOP
}
@Override
public void beforeTearDownStaticEnvironment() throws IOException {
// tear down only on global/static tear-down
executionEnvironment.tearDownSandbox(reusableExecutor);
}
}