Compare commits

...

2 Commits

3 changed files with 45 additions and 0 deletions

View File

@ -11,4 +11,6 @@ public interface IMgSessionService<TSessionItem> where TSessionItem : IMgSession
public bool TryGetSessionItem(string sessionId, out TSessionItem sessionItem);
public bool TryRemoveSessionItem(string sessionId, out TSessionItem sessionItem);
public int Count();
bool TryGetSessionItemBySignlaRConnectionId(string signalRConnectionId, out TSessionItem? sessionItem);
}

View File

@ -0,0 +1,37 @@
using Microsoft.Extensions.Hosting;
using Nop.Services.Logging;
namespace Mango.Nop.Services;
public abstract class MgBackgroundServiceBase(ILogger logger, IServiceProvider service) : BackgroundService
{
protected abstract Task OnExecuteAsync();
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
try
{
await logger.InformationAsync($"MgBackgroundServiceBase.ExecuteAsync(); Processing ExecuteAsync");
await OnExecuteAsync();
}
catch (Exception ex)
{
await logger.ErrorAsync($"MgBackgroundServiceBase.ExecuteAsync(); Failure while processing ExecuteAsync", ex, null);
}
}
}
public override async Task StartAsync(CancellationToken cancellationToken)
{
await logger.InformationAsync("MgBackgroundServiceBase.ExecuteAsync(); Starting MgBackgroundServiceBase");
await base.StartAsync(cancellationToken);
}
public override async Task StopAsync(CancellationToken cancellationToken)
{
await logger.InformationAsync("MgBackgroundServiceBase.StopAsync(); Stopping MgBackgroundServiceBase");
await base.StopAsync(cancellationToken);
}
}

View File

@ -37,4 +37,10 @@ public abstract class MgSessionService<TSessionItem> : IMgSessionService<TSessio
}
public int Count() => Sessions.Count;
public bool TryGetSessionItemBySignlaRConnectionId(string signalRConnectionId, out TSessionItem? sessionItem)
{
sessionItem = Sessions.Values.FirstOrDefault(x => x.SignaRConnectionId == signalRConnectionId);
return sessionItem != null;
}
}