Explorar el Código

AccountService: Cache token data (#6260)

* AccountService: Cache token data

This method appears to indicate that the token returned should be cached. I've made it so that it generates a token that lasts until its expiration time, and reuses it on subsequent calls.

* Private naming convention
riperiperi hace 2 años
padre
commit
d56bab1e24

+ 10 - 1
src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ManagerServer.cs

@@ -22,6 +22,9 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
         private readonly UserId _userId;
 #pragma warning restore IDE0052
 
+        private byte[] _cachedTokenData;
+        private DateTime _cachedTokenExpiry;
+
         public ManagerServer(UserId userId)
         {
             _userId = userId;
@@ -144,7 +147,13 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
             }
             */
 
-            byte[] tokenData = Encoding.ASCII.GetBytes(GenerateIdToken());
+            if (_cachedTokenData == null || DateTime.UtcNow > _cachedTokenExpiry)
+            {
+                _cachedTokenExpiry = DateTime.UtcNow + TimeSpan.FromHours(3);
+                _cachedTokenData = Encoding.ASCII.GetBytes(GenerateIdToken());
+            }
+
+            byte[] tokenData = _cachedTokenData;
 
             context.Memory.Write(bufferPosition, tokenData);
             context.ResponseData.Write(tokenData.Length);