frostfs-sdk-csharp/src/FrostFS.SDK.ClientV2/Parameters/Context.cs
Pavel Gross 2a28806ace [#21] Client: Allows multinenant client
Using one client for several owners

Signed-off-by: Pavel Gross <p.gross@yando.com>
2024-08-12 10:53:00 +03:00

50 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Threading;
using FrostFS.SDK.ModelsV2;
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 OwnerId OwnerId { get; set; }
public ModelsV2.Version 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 PublicKeyCache
{
get
{
if (publicKeyCache == null)
{
publicKeyCache = ByteString.CopyFrom(Key.PublicKey());
}
return publicKeyCache;
}
}
}