[#29] Client: Add object placement methods

Signed-off-by: Pavel Gross <p.gross@yadro.com>
This commit is contained in:
Pavel Gross 2024-12-24 17:32:29 +03:00
parent 8637515869
commit 568bdc67e8
25 changed files with 1382 additions and 32 deletions

View file

@ -1,5 +1,5 @@
using System;
using System.Collections.ObjectModel;
using System.Linq;
using FrostFS.Netmap;
@ -13,12 +13,21 @@ public struct FrostFsPlacementPolicy(bool unique, params FrostFsReplica[] replic
private PlacementPolicy policy;
public FrostFsReplica[] Replicas { get; private set; } = replicas;
public Collection<FrostFsSelector> Selectors { get; } = [];
public Collection<FrostFsFilter> Filters { get; } = [];
public bool Unique { get; private set; } = unique;
public uint BackupFactor { get; set; }
public override readonly bool Equals(object obj)
{
if (obj is null)
{
return false;
}
var other = (FrostFsPlacementPolicy)obj;
@ -46,14 +55,10 @@ public struct FrostFsPlacementPolicy(bool unique, params FrostFsReplica[] replic
return policy;
}
//public static FrostFsPlacementPolicy ToModel(placementPolicy)
//{
// return new FrostFsPlacementPolicy(
// placementPolicy.Unique,
// placementPolicy.Replicas.Select(replica => replica.ToModel()).ToArray()
// );
//}
internal readonly bool IsUnique()
{
return Unique || Replicas.Any(r => r.EcDataCount != 0 || r.EcParityCount != 0);
}
public override readonly int GetHashCode()
{
@ -86,4 +91,4 @@ public struct FrostFsPlacementPolicy(bool unique, params FrostFsReplica[] replic
return true;
}
}
}