using System.Threading.Tasks; namespace FrostFS.SDK.Client; internal interface ISessionProvider { ValueTask GetOrCreateSession(ISessionToken args, CallContext ctx); } internal sealed class SessionProvider(ClientContext envCtx) { public async Task CreateSession(ISessionToken args, CallContext ctx) { var token = await GetDefaultSession(args, ctx).ConfigureAwait(false); return new FrostFsSessionToken(token); } internal async Task GetDefaultSession(ISessionToken args, CallContext ctx) { return await envCtx.Client.CreateSessionInternalAsync(new PrmSessionCreate(uint.MaxValue), ctx).ConfigureAwait(false); } }