diff options
| author | fusion32 <marcopuzziello@gmail.com> | 2025-08-08 14:05:38 -0300 |
|---|---|---|
| committer | fusion32 <marcopuzziello@gmail.com> | 2025-08-08 14:05:38 -0300 |
| commit | 326793ad5e585e00719252c2bb02bfcd94d518a8 (patch) | |
| tree | 51ad91a379e11fd57d3248f94fdd9e0b317e15c2 /query.go | |
| parent | d84651a899a6104fce73d95b9c571627c55e5d16 (diff) | |
| download | web-326793ad5e585e00719252c2bb02bfcd94d518a8.tar.gz web-326793ad5e585e00719252c2bb02bfcd94d518a8.zip | |
refresh account character data
Diffstat (limited to 'query.go')
| -rw-r--r-- | query.go | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -547,6 +547,15 @@ func GetAccountSummary(AccountID int) (Result int, Account TAccountSummary) { for Index := 0; Index < len(g_AccountCache); Index += 1 { Current := &g_AccountCache[Index] + // NOTE(fusion): Account data itself shouldn't change over time unless + // we do it ourselves, in which case `InvalidateAccountCachedData` is + // used to invalidate the cache entry. The problem is that the account + // summary also includes character data which will change, depending on + // activities on the game server. + if time.Since(Current.LastAccess) >= g_CharacterRefreshInterval { + *Current = TAccountCacheEntry{} + } + if Current.LastAccess.Before(LeastRecentlyUsedTime) { LeastRecentlyUsedIndex = Index LeastRecentlyUsedTime = Current.LastAccess @@ -575,9 +584,6 @@ func GetAccountSummary(AccountID int) (Result int, Account TAccountSummary) { return } -// NOTE(fusion): Account data is different from other cached data because it -// shouldn't change over time unless we do it ourselves, in which case we know -// exactly when to invalidate cached data. func InvalidateAccountCachedData(AccountID int) { g_QueryManagerMutex.Lock() defer g_QueryManagerMutex.Unlock() |
