Interface SegmentArchiveManager

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void backup​(@NotNull java.lang.String archiveName, @NotNull java.lang.String backupArchiveName, @NotNull java.util.Set<java.util.UUID> recoveredEntries)
      Method that is doing a backup of the archive given with archiveName into backupArchiveName.
      void copyFile​(@NotNull java.lang.String from, @NotNull java.lang.String to)
      Copies the archive with all the segments.
      @NotNull SegmentArchiveWriter create​(@NotNull java.lang.String archiveName)
      Creates a new archive.
      boolean delete​(@NotNull java.lang.String archiveName)
      Deletes the archive if exists.
      boolean exists​(@NotNull java.lang.String archiveName)
      Check if archive exists.
      @Nullable SegmentArchiveReader forceOpen​(java.lang.String archiveName)
      Opens an archive that wasn't closed correctly.
      @NotNull java.util.List<java.lang.String> listArchives()
      List names of the available .tar archives.
      @Nullable SegmentArchiveReader open​(@NotNull java.lang.String archiveName)
      Opens a given archive for reading.
      void recoverEntries​(@NotNull java.lang.String archiveName, @NotNull java.util.LinkedHashMap<java.util.UUID,​byte[]> entries)
      Finds all the segments included in the archive.
      boolean renameTo​(@NotNull java.lang.String from, @NotNull java.lang.String to)
      Renames the archive.
    • Method Detail

      • listArchives

        @NotNull
        @NotNull java.util.List<java.lang.String> listArchives()
                                                        throws java.io.IOException
        List names of the available .tar archives.
        Returns:
        archive list
        Throws:
        java.io.IOException
      • open

        @Nullable
        @Nullable SegmentArchiveReader open​(@NotNull
                                            @NotNull java.lang.String archiveName)
                                     throws java.io.IOException
        Opens a given archive for reading.
        Parameters:
        archiveName -
        Returns:
        the archive reader or null if the archive doesn't exist or doesn't have a valid index
        Throws:
        java.io.IOException
      • forceOpen

        @Nullable
        @Nullable SegmentArchiveReader forceOpen​(java.lang.String archiveName)
                                          throws java.io.IOException
        Opens an archive that wasn't closed correctly.
        Parameters:
        archiveName -
        Returns:
        the archive reader or null if the implementation doesn't support opening an unclosed archive
        Throws:
        java.io.IOException
      • create

        @NotNull
        @NotNull SegmentArchiveWriter create​(@NotNull
                                             @NotNull java.lang.String archiveName)
                                      throws java.io.IOException
        Creates a new archive.
        Parameters:
        archiveName -
        Returns:
        the archive writer
        Throws:
        java.io.IOException
      • delete

        boolean delete​(@NotNull
                       @NotNull java.lang.String archiveName)
        Deletes the archive if exists.
        Parameters:
        archiveName -
        Returns:
        true if the archive was removed, false otherwise
      • renameTo

        boolean renameTo​(@NotNull
                         @NotNull java.lang.String from,
                         @NotNull
                         @NotNull java.lang.String to)
        Renames the archive.
        Parameters:
        from - the existing archive
        to - new name
        Returns:
        true if the archive was renamed, false otherwise
      • copyFile

        void copyFile​(@NotNull
                      @NotNull java.lang.String from,
                      @NotNull
                      @NotNull java.lang.String to)
               throws java.io.IOException
        Copies the archive with all the segments.
        Parameters:
        from - the existing archive
        to - new name
        Throws:
        java.io.IOException
      • exists

        boolean exists​(@NotNull
                       @NotNull java.lang.String archiveName)
        Check if archive exists.
        Parameters:
        archiveName - archive to check
        Returns:
        true if archive exists, false otherwise
      • recoverEntries

        void recoverEntries​(@NotNull
                            @NotNull java.lang.String archiveName,
                            @NotNull
                            @NotNull java.util.LinkedHashMap<java.util.UUID,​byte[]> entries)
                     throws java.io.IOException
        Finds all the segments included in the archive.
        Parameters:
        archiveName - archive to recover
        entries - results will be put there, in the order of presence in the archive
        Throws:
        java.io.IOException
      • backup

        void backup​(@NotNull
                    @NotNull java.lang.String archiveName,
                    @NotNull
                    @NotNull java.lang.String backupArchiveName,
                    @NotNull
                    @NotNull java.util.Set<java.util.UUID> recoveredEntries)
             throws java.io.IOException
        Method that is doing a backup of the archive given with archiveName into backupArchiveName. In addition, set of UUIDs of recovered segments is provided which can be inspected during backup. Method is invoked during archive recovery procedure and concrete implementation can decide whether original archive should be deleted or modified.
        Parameters:
        archiveName -
        backupArchiveName -
        recoveredEntries -
        Throws:
        java.io.IOException