Package com.atlassian.bitbucket.scm
Interface Command<T>
- Type Parameters:
T- the type of value that the operation will produce.
- All Superinterfaces:
Callable<T>
Wraps an operation which may be run
synchronously. Prior to performing the operation, timeouts may
be set to control how long the operation is allowed to run without producing output or processing input (the
its idle timeout or to provide an absolute limit how long the operation is allowed to
run (the execution timeout.
When the operation completes, it will return an object of type T. If T is Void, the operation
will return null on completion. Typically this means the operation uses some form of callback, allowing the
caller to process the results as they are produced rather than returning them on completion.
-
Method Summary
Modifier and TypeMethodDescriptionTransforms thisCommandinto anAsyncCommandwhich may be called asynchronously.call()Executes a commandvoidsetExecutionTimeout(long timeoutInSecs) Sets the maximum time, in seconds, the operation is allowed to run.default voidsetExecutionTimeout(Duration timeout) Sets the maximum duration the operation is allowed to run.voidsetIdleTimeout(long timeoutInSecs) Sets the maximum time, in seconds, the operation is allowed to run without either producing output or processing input.default voidsetIdleTimeout(Duration timeout) Sets the maximum duration the operation is allowed to run without either producing output or processing input.default voidsetTimeout(long timeoutInSecs) default voidsetTimeout(Duration timeout)
-
Method Details
-
asynchronous
Transforms thisCommandinto anAsyncCommandwhich may be called asynchronously. Any timeouts applied this command will not be applied to the resultingAsyncCommand.Once an
Commandhas been transformed for asynchronous use, it may no longer be usedsynchronously.- Returns:
- an
AsyncCommandfor executing thisCommandasynchronously - Throws:
UnsupportedOperationException- if the implementation cannot internally convert the operation for asynchronous execution
-
call
Executes a command- Specified by:
callin interfaceCallable<T>- Returns:
- the result of the operation
- Throws:
CommandCanceledException- if command execution is canceledServiceException- if an error occurs while performing the operation
-
setExecutionTimeout
void setExecutionTimeout(long timeoutInSecs) Sets the maximum time, in seconds, the operation is allowed to run. The operation will be aborted automatically if it hasn't completed in this time even if it is still producing output or processing input.- Parameters:
timeoutInSecs- the maximum time the operation is allowed to run, in seconds- Throws:
UnsupportedOperationException- if the implementation does not support configuring an execution timeout
-
setExecutionTimeout
Sets the maximum duration the operation is allowed to run. The operation will be aborted automatically if it hasn't completed in this time even if it is still producing output or processing input.- Parameters:
timeout- the maximum duration the operation is allowed to run- Throws:
UnsupportedOperationException- if the implementation does not support configuring an execution timeout- Since:
- 5.1
-
setIdleTimeout
void setIdleTimeout(long timeoutInSecs) Sets the maximum time, in seconds, the operation is allowed to run without either producing output or processing input. Output may be produced on either the standard output or standard error streams.- Parameters:
timeoutInSecs- the maximum time the operation is allowed to be idle, in seconds- Throws:
UnsupportedOperationException- if the implementation does not support configuring an idle timeout
-
setIdleTimeout
Sets the maximum duration the operation is allowed to run without either producing output or processing input. Output may be produced on either the standard output or standard error streams.- Parameters:
timeout- the maximum duration the operation is allowed to be idle- Throws:
UnsupportedOperationException- if the implementation does not support configuring an idle timeout- Since:
- 5.1
-
setTimeout
default void setTimeout(long timeoutInSecs) Sets theidleandexecutiontimeouts, in seconds, for the operation. This is useful for commands that do their processing up-front and may not produce any output until processing is complete. Setting the idle timeout to the same value as the execution timeout effectively disables the idle timeout.- Parameters:
timeoutInSecs- the maximum time the operation is allowed to run or be idle, in seconds- Since:
- 5.1
-
setTimeout
Sets theidleandexecutiontimeouts to the specified duration. This is useful for commands that do their processing up-front and may not produce any output until processing is complete. Setting the idle timeout to the same value as the execution timeout effectively disables the idle timeout.- Parameters:
timeout- the maximum duration the operation is allowed to run or be idle- Since:
- 5.1
-