com.arthenica.ffmpegkit

## Interface Session

- All Known Implementing Classes:
    AbstractSession, FFmpegSession, FFprobeSession, MediaInformationSession

      public interface Session

  Common interface for all `FFmpegKit` sessions.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addLog(Log log)` Adds a new log entry for this session.
    `void` | `cancel()` Cancels running the session.
    `java.util.List<Log>` | `getAllLogs()` Returns all log entries generated for this session.
    `java.util.List<Log>` | `getAllLogs(int waitTimeout)` Returns all log entries generated for this session.
    `java.lang.String` | `getAllLogsAsString()` Returns all log entries generated for this session as a concatenated string.
    `java.lang.String` | `getAllLogsAsString(int waitTimeout)` Returns all log entries generated for this session as a concatenated string.
    `java.lang.String[]` | `getArguments()` Returns command arguments as an array.
    `java.lang.String` | `getCommand()` Returns command arguments as a concatenated string.
    `java.util.Date` | `getCreateTime()` Returns session create time.
    `long` | `getDuration()` Returns the time taken to execute this session.
    `java.util.Date` | `getEndTime()` Returns session end time.
    `ExecuteCallback` | `getExecuteCallback()` Returns the session specific execute callback function.
    `java.lang.String` | `getFailStackTrace()` Returns the stack trace of the exception received while executing this session.
    `java.util.concurrent.Future<?>` | `getFuture()` Returns the future created for this session, if it is executed asynchronously.
    `LogCallback` | `getLogCallback()` Returns the session specific log callback function.
    `LogRedirectionStrategy` | `getLogRedirectionStrategy()` Returns session specific log redirection strategy.
    `java.util.List<Log>` | `getLogs()` Returns all log entries delivered for this session.
    `java.lang.String` | `getLogsAsString()` Returns all log entries delivered for this session as a concatenated string.
    `java.lang.String` | `getOutput()` Returns the log output generated while running the session.
    `ReturnCode` | `getReturnCode()` Returns the return code for this session.
    `long` | `getSessionId()` Returns the session identifier.
    `java.util.Date` | `getStartTime()` Returns session start time.
    `SessionState` | `getState()` Returns the state of the session.
    `boolean` | `isFFmpeg()` Returns whether it is an `FFmpeg` session or not.
    `boolean` | `isFFprobe()` Returns whether it is an `FFprobe` session or not.
    `boolean` | `thereAreAsynchronousMessagesInTransmit()` Returns whether there are still asynchronous messages being transmitted for this session or not.

- - ### Method Detail

    - #### getExecuteCallback

          ExecuteCallback getExecuteCallback()

      Returns the session specific execute callback function.
      Returns:
        session specific execute callback function

    - #### getLogCallback

          LogCallback getLogCallback()

      Returns the session specific log callback function.
      Returns:
        session specific log callback function

    - #### getSessionId

          long getSessionId()

      Returns the session identifier.
      Returns:
        session identifier

    - #### getCreateTime

          java.util.Date getCreateTime()

      Returns session create time.
      Returns:
        session create time

    - #### getStartTime

          java.util.Date getStartTime()

      Returns session start time.
      Returns:
        session start time

    - #### getEndTime

          java.util.Date getEndTime()

      Returns session end time.
      Returns:
        session end time

    - #### getDuration

          long getDuration()

      Returns the time taken to execute this session.
      Returns:
        time taken to execute this session in milliseconds or zero (0) if the session is not over yet

    - #### getArguments

          java.lang.String[] getArguments()

      Returns command arguments as an array.
      Returns:
        command arguments as an array

    - #### getCommand

          java.lang.String getCommand()

      Returns command arguments as a concatenated string.
      Returns:
        command arguments as a concatenated string

    - #### getAllLogs

          java.util.List<Log> getAllLogs(int waitTimeout)

      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.
      Parameters:
        `waitTimeout` - wait timeout for asynchronous messages in milliseconds
      Returns:
        list of log entries generated for this session

    - #### getAllLogs

          java.util.List<Log> getAllLogs()

      Returns all log entries generated for this session. If there are asynchronous messages that are not delivered yet, this method waits for them.
      Returns:
        list of log entries generated for this session

    - #### getLogs

          java.util.List<Log> getLogs()

      Returns all log entries delivered for this session. Note that if there are asynchronous log messages that are not delivered yet, this method will not wait for them and will return immediately.
      Returns:
        list of log entries received for this session

    - #### getAllLogsAsString

          java.lang.String getAllLogsAsString(int waitTimeout)

      Returns all log entries generated for this session as a concatenated string. If there are asynchronous messages that are not delivered yet, this method waits for them until the given timeout.
      Parameters:
        `waitTimeout` - wait timeout for asynchronous messages in milliseconds
      Returns:
        all log entries generated for this session as a concatenated string

    - #### getAllLogsAsString

          java.lang.String getAllLogsAsString()

      Returns all log entries generated for this session as a concatenated string. If there are asynchronous messages that are not delivered yet, this method waits for them.
      Returns:
        all log entries generated for this session as a concatenated string

    - #### getLogsAsString

          java.lang.String getLogsAsString()

      Returns all log entries delivered for this session as a concatenated string. Note that if there are asynchronous log messages that are not delivered yet, this method will not wait for them and will return immediately.
      Returns:
        list of log entries received for this session

    - #### getOutput

          java.lang.String getOutput()

      Returns the log output generated while running the session.
      Returns:
        log output generated

    - #### getState

          SessionState getState()

      Returns the state of the session.
      Returns:
        state of the session

    - #### getReturnCode

          ReturnCode getReturnCode()

      Returns the return code for this session. Note that return code is only set for sessions that end with COMPLETED state. If a session is not started, still running or failed then this method returns null.
      Returns:
        the return code for this session if the session is COMPLETED, null if session is not started, still running or failed

    - #### getFailStackTrace

          java.lang.String getFailStackTrace()

      Returns the stack trace of the exception received while executing this session.

      The stack trace is only set for sessions that end with FAILED state. For sessions that has COMPLETED state this method returns null.

      Returns:
        stack trace of the exception received while executing this session, null if session is not started, still running or completed

    - #### getLogRedirectionStrategy

          LogRedirectionStrategy getLogRedirectionStrategy()

      Returns session specific log redirection strategy.
      Returns:
        session specific log redirection strategy

    - #### thereAreAsynchronousMessagesInTransmit

          boolean thereAreAsynchronousMessagesInTransmit()

      Returns whether there are still asynchronous messages being transmitted for this session or not.
      Returns:
        true if there are still asynchronous messages being transmitted, false otherwise

    - #### addLog

          void addLog(Log log)

      Adds a new log entry for this session.
      Parameters:
        `log` - log entry

    - #### getFuture

          java.util.concurrent.Future<?> getFuture()

      Returns the future created for this session, if it is executed asynchronously.
      Returns:
        future that runs this session asynchronously

    - #### isFFmpeg

          boolean isFFmpeg()

      Returns whether it is an `FFmpeg` session or not.
      Returns:
        true if it is an `FFmpeg` session, false otherwise

    - #### isFFprobe

          boolean isFFprobe()

      Returns whether it is an `FFprobe` session or not.
      Returns:
        true if it is an `FFprobe` session, false otherwise

    - #### cancel

          void cancel()

      Cancels running the session.