mirror of
https://github.com/Jetsparrow/karmabot.git
synced 2026-01-21 00:56:09 +03:00
Add logging to RequestChain and TimeoutManager
This commit is contained in:
parent
87ed735486
commit
72fbee9c46
@ -97,7 +97,7 @@ namespace JetKarmaBot
|
||||
|
||||
void InitChain(IContainer c)
|
||||
{
|
||||
Chain = new RequestChain();
|
||||
Chain = c.ResolveObject(new RequestChain());
|
||||
Chain.Add(c.GetInstance<TimeoutManager.PreDbThrowout>());
|
||||
Chain.Add(c.GetInstance<DatabaseHandler>());
|
||||
Chain.Add(Timeout);
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using NLog;
|
||||
using Perfusion;
|
||||
|
||||
namespace JetKarmaBot.Services.Handling
|
||||
{
|
||||
@ -10,6 +12,7 @@ namespace JetKarmaBot.Services.Handling
|
||||
}
|
||||
public class RequestChain : IRequestHandler
|
||||
{
|
||||
[Inject] private Logger log;
|
||||
List<IRequestHandler> handlerStack = new List<IRequestHandler>();
|
||||
public async Task Handle(RequestContext ctx, Func<RequestContext, Task> next = null)
|
||||
{
|
||||
@ -17,8 +20,13 @@ namespace JetKarmaBot.Services.Handling
|
||||
Func<RequestContext, Task> chainNext = null;
|
||||
chainNext = (newCtx) =>
|
||||
{
|
||||
if (i == handlerStack.Count) return Task.CompletedTask;
|
||||
if (i == handlerStack.Count)
|
||||
{
|
||||
log.ConditionalTrace("(next) End of request chain");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
IRequestHandler handler = handlerStack[i++];
|
||||
log.ConditionalTrace($"(next) Executing handler {handler.GetType().Name}");
|
||||
return handler.Handle(newCtx, chainNext);
|
||||
};
|
||||
await chainNext(ctx);
|
||||
@ -27,6 +35,7 @@ namespace JetKarmaBot.Services.Handling
|
||||
}
|
||||
public void Add(IRequestHandler handler)
|
||||
{
|
||||
log.ConditionalTrace($"Adding {handler.GetType().Name} to reqchain");
|
||||
handlerStack.Add(handler);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ using System.Threading.Tasks;
|
||||
using JetKarmaBot.Models;
|
||||
using System.Threading;
|
||||
using System.Linq;
|
||||
using NLog;
|
||||
|
||||
namespace JetKarmaBot.Services.Handling
|
||||
{
|
||||
@ -39,6 +40,7 @@ namespace JetKarmaBot.Services.Handling
|
||||
[Inject] private KarmaContextFactory Db;
|
||||
[Inject] private Config cfg;
|
||||
[Inject] private Localization Locale;
|
||||
[Inject] private Logger log;
|
||||
public Dictionary<int, TimeoutStats> TimeoutCache = new Dictionary<int, TimeoutStats>();
|
||||
private async Task ApplyCost(string name, bool succeded, int uid, KarmaContext db)
|
||||
{
|
||||
@ -65,6 +67,7 @@ namespace JetKarmaBot.Services.Handling
|
||||
{
|
||||
if (!TimeoutCache.ContainsKey(uid))
|
||||
{
|
||||
log.ConditionalTrace($"User {uid} not present: saving to cache");
|
||||
TimeoutCache[uid] = new TimeoutStats()
|
||||
{
|
||||
CooldownDate = (await db.Users.FindAsync(uid))?.CooldownDate ?? DateTime.Now
|
||||
@ -73,6 +76,7 @@ namespace JetKarmaBot.Services.Handling
|
||||
}
|
||||
public async Task Save(CancellationToken ct = default(CancellationToken))
|
||||
{
|
||||
log.Info("Saving timeout info to database");
|
||||
using (KarmaContext db = Db.GetContext())
|
||||
{
|
||||
foreach (int i in TimeoutCache.Keys)
|
||||
@ -81,6 +85,7 @@ namespace JetKarmaBot.Services.Handling
|
||||
}
|
||||
await db.SaveChangesAsync(ct);
|
||||
}
|
||||
log.Info("Saved");
|
||||
}
|
||||
public async Task SaveLoop(CancellationToken ct = default(CancellationToken))
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user