frostfs-sdk-csharp/src/FrostFS.SDK.ClientV2/Models/Object/SplitId.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

62 lines
1,015 B
C#

using FrostFS.SDK.Cryptography;
using Google.Protobuf;
using System;
namespace FrostFS.SDK;
public class SplitId
{
private readonly Guid id;
private ByteString? _message;
public SplitId()
{
id = Guid.NewGuid();
}
public SplitId(Guid guid)
{
id = guid;
}
private SplitId(byte[] binary)
{
id = new Guid(binary);
}
private SplitId(string str)
{
id = new Guid(str);
}
public static SplitId CreateFromBinary(byte[] binaryData)
{
return new SplitId(binaryData);
}
public static SplitId CreateFromString(string stringData)
{
return new SplitId(stringData);
}
public override string ToString()
{
return id.ToString();
}
public byte[]? ToBinary()
{
if (id == Guid.Empty)
return null;
return id.ToBytes();
}
public ByteString? GetSplitId()
{
return _message ??= ByteString.CopyFrom(ToBinary());
}
}