mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2026-05-02 03:32:15 +02:00
25 lines
932 B
C#
25 lines
932 B
C#
using MemoryPack;
|
|
|
|
namespace Phantom.Common.Data.Agent.Instance.Backups;
|
|
|
|
[MemoryPackable(GenerateType.VersionTolerant)]
|
|
public sealed partial record InstanceBackupSchedule(
|
|
[property: MemoryPackOrder(0)] ushort InitialDelayInMinutes,
|
|
[property: MemoryPackOrder(1)] ushort BackupIntervalInMinutes,
|
|
[property: MemoryPackOrder(2)] ushort BackupFailureRetryDelayInMinutes,
|
|
[property: MemoryPackOrder(3)] Optional<IInstancePlayerCountDetectionStrategy> PlayerCountDetectionStrategy
|
|
) {
|
|
[MemoryPackIgnore]
|
|
public TimeSpan InitialDelay => TimeSpan.FromMinutes(InitialDelayInMinutes);
|
|
|
|
[MemoryPackIgnore]
|
|
public TimeSpan BackupInterval => TimeSpan.FromMinutes(AtLeastOne(BackupIntervalInMinutes));
|
|
|
|
[MemoryPackIgnore]
|
|
public TimeSpan BackupFailureRetryDelay => TimeSpan.FromMinutes(AtLeastOne(BackupFailureRetryDelayInMinutes));
|
|
|
|
private static ushort AtLeastOne(ushort value) {
|
|
return Math.Max(value, (ushort) 1);
|
|
}
|
|
}
|