/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.wrapper.sandboxed; import java.io.IOException; import de.rcenvironment.core.utils.executor.CommandLineExecutor; /** * Defines how the execution "sandbox", ie the working directory of the wrapped executable, behaves. * From a technical standpoint, this interface defines a set of lifecycle callbacks that are invoked * by the wrapper at the appropriate times (inversion of control). * * @author Robert Mischke * */ public interface SandboxBehaviour { /** * Prepares a single invocation of the wrapped executable. * * @return the {@link CommandLineExecutor} to use for the execution; this may or may not return * the same instance on every invocation * @throws IOException on I/O errors */ CommandLineExecutor setupSingleRun() throws IOException; /** * Callback for operations after the executable was run. Note that this method must be passed * the same executor that was previously acquired from {@link #setupSingleRun()} and used to * invoke the executable; otherwise, the behaviour is undefined. * * @param executor the {@link CommandLineExecutor} that was used for the execution * @throws IOException on I/O errors */ void afterSingleRun(CommandLineExecutor executor) throws IOException; /** * Callback that signals that the execution environment (which can span over multiple * invocations of the target executable) is about to be destroyed. Final cleanup operations are * usually performed here. * * @throws IOException on I/O errors */ void beforeTearDownStaticEnvironment() throws IOException; }