/
aprogrammer
/
reverse-proxy-ms-yarp
Обзор
Документация
Войти
/
aprogrammer
/
reverse-proxy-ms-yarp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/ReverseProxy/SessionAffinity/HashCookieSessionAffinityPolicy.cs
34 строки
1 KB
Chris Ross
Using new TimeProvider #2084 (#2108)
27 апр 2023, 01:51
Не верифицирован
27 апр 2023, 01:51
be58d84
Код
Авторство
О чём код?
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System; using System.IO.Hashing; using System.Runtime.CompilerServices; using System.Text; using Microsoft.Extensions.Logging; using Yarp.ReverseProxy.Model; namespace Yarp.ReverseProxy.SessionAffinity; internal sealed class HashCookieSessionAffinityPolicy : BaseHashCookieSessionAffinityPolicy { private readonly ConditionalWeakTable<DestinationState, string> _hashes = new(); public HashCookieSessionAffinityPolicy( TimeProvider timeProvider, ILogger<HashCookieSessionAffinityPolicy> logger) : base(timeProvider, logger) { } public override string Name => SessionAffinityConstants.Policies.HashCookie; protected override string GetDestinationHash(DestinationState d) { return _hashes.GetValue(d, static d => { // Stable format across instances var destinationIdBytes = Encoding.Unicode.GetBytes(d.DestinationId.ToUpperInvariant()); var hashBytes = XxHash64.Hash(destinationIdBytes); return Convert.ToHexString(hashBytes).ToLowerInvariant(); }); } }