134 lines
3.9 KiB
C#
134 lines
3.9 KiB
C#
using MimeKit;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Procs;
|
|
using Saxonite.Net.Core.Web.Admin.Procs;
|
|
using Saxonite.Net.Core.Web.Base.Procs;
|
|
using Saxonite.Net.Standard.Base.App;
|
|
using Saxonite.Net.Standard.Base.Consoles;
|
|
using Saxonite.Net.Standard.Base.Procs;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
|
|
namespace Saxonite.Net.Core.Web.Admin.Consoles
|
|
{
|
|
//=======================================================================
|
|
public class SaxProcessConsole_Admin : SaxProcessConsole
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Definitions.
|
|
public enum ProcessType
|
|
{
|
|
OrganisationUpload,
|
|
GolfUsgaDataLookup
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Process cache - to sustain processes outside of request/response timescales.
|
|
internal class ProcessData
|
|
{
|
|
public ProcessData(SaxProcess_Web process)
|
|
{
|
|
this.Process = process;
|
|
|
|
}
|
|
public SaxProcess_Web Process { get; }
|
|
}
|
|
// Cache.
|
|
private Dictionary<ProcessType, ProcessData> processes { get; } = new Dictionary<ProcessType, ProcessData>();
|
|
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
//private SaxInternals internals = null;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
public SaxProcessConsole_Admin(SaxSessionContext sessionContext) : base(sessionContext)
|
|
{
|
|
}
|
|
protected async override void Dispose(bool disposing)
|
|
{
|
|
if (disposing)
|
|
{
|
|
// Clear processes.
|
|
foreach (ProcessData processData in processes.Values)
|
|
{
|
|
await processData.Process.StopProcessAsync();
|
|
processData.Process.Dispose();
|
|
}
|
|
}
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Processes.
|
|
//-------------------------------------------------------------------
|
|
|
|
public SaxProcess_Web GetProcess(ProcessType processType)
|
|
{
|
|
return processes.GetValueOrDefault(processType, null)?.Process;
|
|
}
|
|
|
|
public bool IsProcessing(ProcessType processType)
|
|
{
|
|
SaxProcess_Web process = GetProcess(processType);
|
|
if (process != null)
|
|
if (process.Processing) return true;
|
|
return false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Remove the process from the cache.
|
|
/// </summary>
|
|
/// <param name="processType"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="InProgressException"></exception>
|
|
public bool ClearProcess(ProcessType processType)
|
|
{
|
|
SaxProcess_Web process = GetProcess(processType);
|
|
if (process != null)
|
|
{
|
|
if (process.Processing)
|
|
throw new SaProcess_Base.InProgressException();
|
|
process.Dispose();
|
|
}
|
|
return processes.Remove(processType);
|
|
}
|
|
|
|
public void SetProcess(ProcessType processType, SaxProcess_Web process)
|
|
{
|
|
ClearProcess(processType);
|
|
processes.Add(processType, new ProcessData(process));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Specific processes.
|
|
//-------------------------------------------------------------------
|
|
|
|
//-------------------------------------------------------------------
|
|
// Organisation Upload.
|
|
public SaxOrganisationUploader GetOrganisationUploader()
|
|
{
|
|
return GetProcess(ProcessType.OrganisationUpload) as SaxOrganisationUploader;
|
|
}
|
|
public void SetProcess(SaxOrganisationUploader process)
|
|
{
|
|
SetProcess(ProcessType.OrganisationUpload, process);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Organisation Upload.
|
|
public SaxGolfUsgaDataLookup GetGolfUsgaDataLookup()
|
|
{
|
|
return GetProcess(ProcessType.GolfUsgaDataLookup) as SaxGolfUsgaDataLookup;
|
|
}
|
|
public void SetProcess(SaxGolfUsgaDataLookup process)
|
|
{
|
|
SetProcess(ProcessType.OrganisationUpload, process);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|