62 lines
1,015 B
C#
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());
|
|
}
|
|
}
|