frostfs-sdk-csharp/src/FrostFS.SDK.ClientV2/Parameters/Context.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

49 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Threading;
using FrostFS.SDK.Cryptography;
using Google.Protobuf;
using Grpc.Core.Interceptors;
namespace FrostFS.SDK.ClientV2;
public class Context()
{
private List<Interceptor>? interceptors;
private ByteString? publicKeyCache;
public ECDsa Key { get; set; }
public FrostFsOwner OwnerId { get; set; }
public FrostFsVersion Version { get; set; }
public CancellationToken CancellationToken { get; set; } = default;
public TimeSpan Timeout { get; set; } = default;
public DateTime? Deadline => Timeout.Ticks > 0 ? DateTime.UtcNow.Add(Timeout) : null;
public Action<CallStatistics>? Callback { get; set; }
public List<Interceptor> Interceptors
{
get { return this.interceptors ??= []; }
set { this.interceptors = value; }
}
public ByteString? GetPublicKeyCache()
{
if (publicKeyCache == null && Key != null)
{
publicKeyCache = ByteString.CopyFrom(Key.PublicKey());
}
return publicKeyCache;
}
}