Interface UpdateManager

  • All Known Implementing Classes:
    ConsoleUpdateManager

    public interface UpdateManager
    The central resource coordinating updates. This must be registered with the context. The UpdateManager starts and stops all updates, and controls notification to the user.
    Since:
    0.9.4
    • Field Detail

    • Method Detail

      • register

        void register​(UpdatePostProcessor upp,
                      UpdateType type,
                      int fileType)
        Register a post-processor for this UpdateType and SU3File file type.
        Parameters:
        type - only ROUTER_SIGNED_SU3 and ROUTER_DEV_SU3 are currently supported
        fileType - a SU3File TYPE_xxx constant, 1-255, TYPE_ZIP not supported.
        Since:
        0.9.51
      • start

        void start()
      • shutdown

        void shutdown()
      • notifyVersionAvailable

        boolean notifyVersionAvailable​(UpdateTask task,
                                       URI newsSource,
                                       UpdateType type,
                                       String id,
                                       UpdateMethod method,
                                       List<URI> updateSources,
                                       String newVersion,
                                       String minVersion)
        Called by the Checker, either after check() was called, or it found out on its own. Use this if there is only one UpdateMethod; otherwise use the Map method below.
        Parameters:
        newsSource - who told us
        id - plugin name for plugins, ignored otherwise
        method - How to get the new version
        updateSources - Where to get the new version
        newVersion - The new version available
        minVersion - The minimum installed version to be able to update to newVersion
        Returns:
        true if we didn't know already
      • notifyVersionAvailable

        boolean notifyVersionAvailable​(UpdateTask task,
                                       URI newsSource,
                                       UpdateType type,
                                       String id,
                                       Map<UpdateMethod,​List<URI>> sourceMap,
                                       String newVersion,
                                       String minVersion)
        Called by the Checker, either after check() was called, or it found out on its own. Checkers must use this method if there are multiple UpdateMethods discoverd simultaneously.
        Parameters:
        newsSource - who told us
        id - plugin name for plugins, ignored otherwise
        sourceMap - Mapping of methods to sources
        newVersion - The new version available
        minVersion - The minimum installed version to be able to update to newVersion
        Returns:
        true if we didn't know already
        Since:
        0.9.6
      • notifyVersionConstraint

        void notifyVersionConstraint​(UpdateTask task,
                                     URI newsSource,
                                     UpdateType type,
                                     String id,
                                     String newVersion,
                                     String message)
        A new version is available but cannot be downloaded or installed due to some constraint. The manager should notify the user. Called by the Checker, either after check() was called, or it found out on its own.
        Parameters:
        newsSource - who told us
        id - plugin name for plugins, ignored otherwise
        newVersion - The new version available
        message - A translated message to be displayed to the user, non-null
        Since:
        0.9.9
      • notifyCheckComplete

        void notifyCheckComplete​(UpdateTask task,
                                 boolean newer,
                                 boolean success)
        Called by the Checker after check() was called and all notifyVersionAvailable() callbacks are finished
        Parameters:
        newer - notifyVersionAvailable was called
        success - check succeeded (newer or not)
      • notifyProgress

        void notifyProgress​(UpdateTask task,
                            String status,
                            long downloaded,
                            long totalSize)
      • notifyAttemptFailed

        void notifyAttemptFailed​(UpdateTask task,
                                 String reason,
                                 Throwable t)
        Not necessarily the end if there are more URIs to try.
        Parameters:
        t - may be null
      • notifyTaskFailed

        void notifyTaskFailed​(UpdateTask task,
                              String reason,
                              Throwable t)
        The task has finished and failed.
        Parameters:
        t - may be null
      • notifyComplete

        boolean notifyComplete​(UpdateTask task,
                               String actualVersion,
                               File file)
        An update has been downloaded but not verified. The manager will verify it. Caller should delete the file upon return, unless it will share it with others, e.g. on a torrent.
        Parameters:
        actualVersion - may be higher (or lower?) than the version requested
        file - a valid format for the task's UpdateType
        Returns:
        true if valid, false if corrupt
      • checkAvailable

        String checkAvailable​(UpdateType type)
        Is an update available? Blocking. An available update may still have a constraint or lack sources.
        Parameters:
        type - the UpdateType of this request
        Returns:
        new version or null if nothing newer is available
        Since:
        0.9.21
      • checkAvailable

        String checkAvailable​(UpdateType type,
                              long maxWait)
        Is an update available? Blocking. An available update may still have a constraint or lack sources.
        Parameters:
        type - the UpdateType of this request
        maxWait - max time to block
        Returns:
        new version or null if nothing newer is available
        Since:
        0.9.21
      • checkAvailable

        String checkAvailable​(UpdateType type,
                              String id,
                              long maxWait)
        Is an update available? Blocking. An available update may still have a constraint or lack sources.
        Parameters:
        type - the UpdateType of this request
        maxWait - max time to block
        id - id of this request
        Returns:
        new version or null if nothing newer is available
        Since:
        0.9.21
      • isUpdateInProgress

        boolean isUpdateInProgress()
        Is a router update being downloaded?
        Returns:
        true iff router update is being downloaded
        Since:
        0.9.21
      • isUpdateInProgress

        boolean isUpdateInProgress​(UpdateType type)
        Is a router update being downloaded?
        Parameters:
        type - the UpdateType of this request
        Returns:
        true iff router update is being downloaded
        Since:
        0.9.21
      • isUpdateInProgress

        boolean isUpdateInProgress​(UpdateType type,
                                   String id)
        Is a router update being downloaded?
        Parameters:
        type - the UpdateType of this request
        id - of this request
        Returns:
        true iff router update is being downloaded
        Since:
        0.9.21
      • update

        boolean update​(UpdateType type)
        Non-blocking. Does not check. Fails if check or update already in progress. If returns true, then call isUpdateInProgress() in a loop
        Parameters:
        type - the UpdateType of this request
        Returns:
        true if task started
        Since:
        0.9.21
      • update

        boolean update​(UpdateType type,
                       String id)
        Non-blocking. Does not check. Fails if check or update already in progress. If returns true, then call isUpdateInProgress() in a loop
        Parameters:
        type - the UpdateType of this request
        id - id of this request
        Returns:
        true if task started
        Since:
        0.9.21
      • update

        boolean update​(UpdateType type,
                       long maxTime)
        Non-blocking. Does not check. Fails if check or update already in progress. If returns true, then call isUpdateInProgress() in a loop
        Parameters:
        type - the UpdateType of this request
        maxTime - not honored by all Updaters
        Returns:
        true if task started
        Since:
        0.9.21
      • update

        boolean update​(UpdateType type,
                       String id,
                       long maxTime)
        Non-blocking. Does not check. Fails if check or update already in progress. If returns true, then call isUpdateInProgress() in a loop
        Parameters:
        type - the UpdateType of this request
        maxTime - not honored by all Updaters
        id - id of this request
        Returns:
        true if task started
        Since:
        0.9.21
      • getStatus

        String getStatus()
        The status on any update current or last finished.
        Returns:
        status or ""
        Since:
        0.9.21
      • notifyInstalled

        void notifyInstalled​(UpdateType type,
                             String id,
                             String version)
        Tell the UpdateManager that a version is already installed.
        Parameters:
        id - subtype for plugins, or ""
        version - null to remove from installed
        Since:
        0.9.45