28 lines
No EOL
764 B
C#
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;
|
|
}
|
|
} |