using System; using System.Collections.ObjectModel; using Grpc.Core; using Grpc.Core.Interceptors; namespace FrostFS.SDK.Client; public class ClientContext(FrostFSClient client, ClientKey key, FrostFsOwner owner, ChannelBase channel, FrostFsVersion version) { private string? sessionKey; internal FrostFsOwner Owner { get; } = owner; internal string? Address { get; } = channel.Target; internal ChannelBase Channel { get; private set; } = channel; internal FrostFsVersion Version { get; } = version; internal NetworkSettings? NetworkSettings { get; set; } internal FrostFSClient Client { get; } = client; internal ClientKey Key { get; } = key; internal SessionCache? SessionCache { get; set; } internal Action? Callback { get; set; } internal Collection? Interceptors { get; set; } internal Action? PoolErrorHandler { get; set; } internal string? SessionCacheKey { get { if (sessionKey == null && Key != null && Address != null) { sessionKey = Pool.FormCacheKey(Address, Key.PublicKey); } return sessionKey; } } }