/*************************************************************************
* ModernUO *
* Copyright 2019-2026 - ModernUO Development Team *
* Email: hi@modernuo.com *
* File: IArchiveDestination.cs *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see . *
*************************************************************************/
using System;
namespace Server.Saves;
///
/// Represents a destination for completed archive files.
/// Implementations run on a background thread (ThreadPool).
///
public interface IArchiveDestination
{
///
/// A human-readable name for logging (e.g., "Local Filesystem", "S3 us-east-1").
///
string Name { get; }
///
/// Called after a local archive file is successfully created and verified.
/// Must be safe to call from a ThreadPool thread.
///
/// Full path to the verified .tar.zst archive.
/// The archive period (Hourly, Daily, Monthly).
/// The start of the time range this archive covers.
/// True if the destination successfully received the archive.
bool SendArchive(string archiveFilePath, ArchivePeriod period, DateTime rangeStart);
///
/// Returns the number of local archives to retain for this period.
/// Destinations that keep their own copies may return 0.
///
int GetRetentionCount(ArchivePeriod period);
}