using System.Threading.Tasks; using FrostFS.SDK.ClientV2.Parameters; namespace FrostFS.SDK.ClientV2; internal interface ISessionProvider { ValueTask GetOrCreateSession(ISessionToken args, Context ctx); } internal class SessionProvider(ClientEnvironment env) { public async ValueTask GetOrCreateSession(ISessionToken args, Context ctx) { if (args.SessionToken is null) { return await env.Client.CreateSessionInternalAsync(new PrmSessionCreate(uint.MaxValue) { Context = ctx }); } return new Session.SessionToken().Deserialize(args.SessionToken.Token); } }