/*
* Copyright (c) 2021 Taner Sener
*
* This file is part of FFmpegKit.
*
* FFmpegKit is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FFmpegKit is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General License for more details.
*
* You should have received a copy of the GNU Lesser General License
* along with FFmpegKit. If not, see
Common interface for all
* The stack trace is only set for sessions that end with FAILED state. For sessions that has
* COMPLETED state this method returns null.
*
* @return stack trace of the exception received while executing this session, null if session
* is not started, still running or completed
*/
String getFailStackTrace();
/**
* Returns session specific log redirection strategy.
*
* @return session specific log redirection strategy
*/
LogRedirectionStrategy getLogRedirectionStrategy();
/**
* Returns whether there are still asynchronous messages being transmitted for this
* session or not.
*
* @return true if there are still asynchronous messages being transmitted, false
* otherwise
*/
boolean thereAreAsynchronousMessagesInTransmit();
/**
* Adds a new log entry for this session.
*
* It is invoked internally by FFmpegKit
sessions.
*/
public interface Session {
/**
* Returns the session specific log callback.
*
* @return session specific log callback
*/
LogCallback getLogCallback();
/**
* Returns the session identifier.
*
* @return session identifier
*/
long getSessionId();
/**
* Returns session create time.
*
* @return session create time
*/
Date getCreateTime();
/**
* Returns session start time.
*
* @return session start time
*/
Date getStartTime();
/**
* Returns session end time.
*
* @return session end time
*/
Date getEndTime();
/**
* Returns the time taken to execute this session.
*
* @return time taken to execute this session in milliseconds or zero (0) if the session is
* not over yet
*/
long getDuration();
/**
* Returns command arguments as an array.
*
* @return command arguments as an array
*/
String[] getArguments();
/**
* Returns command arguments as a concatenated string.
*
* @return command arguments as a concatenated string
*/
String getCommand();
/**
* Returns all log entries generated for this session. If there are asynchronous
* messages that are not delivered yet, this method waits for them until the given timeout.
*
* @param waitTimeout wait timeout for asynchronous messages in milliseconds
* @return list of log entries generated for this session
*/
ListFFmpegKit
library methods. Must not be used by user
* applications.
*
* @param log log entry
*/
void addLog(final Log log);
/**
* Returns the future created for this session, if it is executed asynchronously.
*
* @return future that runs this session asynchronously
*/
Future> getFuture();
/**
* Returns whether it is an FFmpeg
session or not.
*
* @return true if it is an FFmpeg
session, false otherwise
*/
boolean isFFmpeg();
/**
* Returns whether it is an FFprobe
session or not.
*
* @return true if it is an FFprobe
session, false otherwise
*/
boolean isFFprobe();
/**
* Returns whether it is a MediaInformation
session or not.
*
* @return true if it is a MediaInformation
session, false otherwise
*/
boolean isMediaInformation();
/**
* Cancels running the session.
*/
void cancel();
}