frostfs-sdk-csharp/src/FrostFS.SDK.ClientV2/Models/Netmap/FrostFsPlacementPolicy.cs
Pavel Gross 6562aa27a5 [#23] Client: Refactoring to optimize memory usage
Signed-off-by: Pavel Gross <p.gross@yando.com>
2024-09-11 10:58:00 +03:00

28 lines
No EOL
764 B
C#

using System;
using System.Linq;
namespace FrostFS.SDK;
public class FrostFsPlacementPolicy(bool unique, params FrostFsReplica[] replicas) : IComparable<FrostFsPlacementPolicy>
{
public FrostFsReplica[] Replicas { get; private set; } = replicas;
public bool Unique { get; private set; } = unique;
public int CompareTo(FrostFsPlacementPolicy other)
{
var notEqual = other == null
|| Unique != other.Unique
|| Replicas.Length != other.Replicas.Length;
if (notEqual)
return 1;
foreach (var replica in Replicas)
{
if (!other!.Replicas.Any(r => r.Count == replica.Count && r.Selector == replica.Selector))
return 1;
}
return 0;
}
}