FlowAction

A dataflow action.

A parameterized and isolated piece of work that becomes eligible for execution within a dataflow scope as soon as all of its input parameters become available.

Implementations can benefit from constructor injection of services using the @Inject annotation. Currently, only a small subset of services is supported:

/**
 * Plays a given {@link Parameters#getMediaFile() media file} using {@code ffplay}.
 */
class FFPlay implements FlowAction<FFPlay.Parameters> {

    interface Parameters extends FlowParameters {
        @Input
        Property<File> getMediaFile();
    }

    private final ExecOperations execOperations;

    @Inject
    FFPlay(ExecOperations execOperations) {
        this.execOperations = execOperations;
    }

    @Override
    public void execute(Parameters parameters) throws Exception {
        execOperations.exec(spec -> {
            spec.commandLine(
                "ffplay", "-nodisp", "-autoexit", "-hide_banner", "-loglevel", "quiet",
                parameters.getMediaFile().get().getAbsolutePath()
            );
            spec.setIgnoreExitValue(true);
        });
    }
}

Since

8.1

See also

Functions

Link copied to clipboard
abstract fun execute(parameters: P)