using Microsoft.Extensions.Logging; using System; namespace CryptoExchange.Net.Logging.Extensions { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member public static class RateLimitGateLoggingExtensions { private static readonly Action _rateLimitRequestFailed; private static readonly Action _rateLimitConnectionFailed; private static readonly Action _rateLimitDelayingRequest; private static readonly Action _rateLimitDelayingConnection; private static readonly Action _rateLimitAppliedRequest; private static readonly Action _rateLimitAppliedConnection; static RateLimitGateLoggingExtensions() { _rateLimitRequestFailed = LoggerMessage.Define( LogLevel.Warning, new EventId(6000, "RateLimitRequestFailed"), "[Req {Id}] call to {Path} failed because of ratelimit guard {Guard}; {Limit}"); _rateLimitConnectionFailed = LoggerMessage.Define( LogLevel.Warning, new EventId(6001, "RateLimitConnectionFailed"), "[Sckt {Id}] connection failed because of ratelimit guard {Guard}; {Limit}"); _rateLimitDelayingRequest = LoggerMessage.Define( LogLevel.Warning, new EventId(6002, "RateLimitDelayingRequest"), "[Req {Id}] delaying call to {Path} by {Delay} because of ratelimit guard {Guard}; {Limit}"); _rateLimitDelayingConnection = LoggerMessage.Define( LogLevel.Warning, new EventId(6003, "RateLimitDelayingConnection"), "[Sckt {Id}] delaying connection by {Delay} because of ratelimit guard {Guard}; {Limit}"); _rateLimitAppliedConnection = LoggerMessage.Define( LogLevel.Trace, new EventId(6004, "RateLimitDelayingConnection"), "[Sckt {Id}] connection passed ratelimit guard {Guard}; {Limit}, New count: {Current}"); _rateLimitAppliedRequest = LoggerMessage.Define( LogLevel.Trace, new EventId(6005, "RateLimitAppliedRequest"), "[Req {Id}] call to {Path} passed ratelimit guard {Guard}; {Limit}, New count: {Current}"); } public static void RateLimitRequestFailed(this ILogger logger, int requestId, string path, string guard, string limit) { _rateLimitRequestFailed(logger, requestId, path, guard, limit, null); } public static void RateLimitConnectionFailed(this ILogger logger, int connectionId, string guard, string limit) { _rateLimitConnectionFailed(logger, connectionId, guard, limit, null); } public static void RateLimitDelayingRequest(this ILogger logger, int requestId, string path, TimeSpan delay, string guard, string limit) { _rateLimitDelayingRequest(logger, requestId, path, delay, guard, limit, null); } public static void RateLimitDelayingConnection(this ILogger logger, int connectionId, TimeSpan delay, string guard, string limit) { _rateLimitDelayingConnection(logger, connectionId, delay, guard, limit, null); } public static void RateLimitAppliedConnection(this ILogger logger, int connectionId, string guard, string limit, int current) { _rateLimitAppliedConnection(logger, connectionId, guard, limit, current, null); } public static void RateLimitAppliedRequest(this ILogger logger, int requestIdId, string path, string guard, string limit, int current) { _rateLimitAppliedRequest(logger, requestIdId, path, guard, limit, current, null); } } }