Interface SegmentArchiveManager

  • All Known Implementing Classes:
    SegmentTarManager, SplitSegmentArchiveManager

    public interface SegmentArchiveManager
    SegmentArchiveManager provides a low-level access to the segment files (eg. stored in the .tar). It allows to perform a few FS-like operations (delete, rename, copy, etc.) and also opens the segment archives either for reading or reading and writing.

    The implementation doesn't need to be thread-safe.

    • Method Detail

      • listArchives

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

        @Nullable
        @Nullable SegmentArchiveReader open​(@NotNull
                                            @NotNull String archiveName)
                                     throws 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:
        IOException
      • forceOpen

        @Nullable
        @Nullable SegmentArchiveReader forceOpen​(String archiveName)
                                          throws 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:
        IOException
      • delete

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

        boolean renameTo​(@NotNull
                         @NotNull String from,
                         @NotNull
                         @NotNull 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 String from,
                      @NotNull
                      @NotNull String to)
               throws IOException
        Copies the archive with all the segments.
        Parameters:
        from - the existing archive
        to - new name
        Throws:
        IOException
      • exists

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

        void recoverEntries​(@NotNull
                            @NotNull String archiveName,
                            @NotNull
                            @NotNull LinkedHashMap<UUID,​byte[]> entries)
                     throws 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:
        IOException