89 lines
3.4 KiB
C#
89 lines
3.4 KiB
C#
using Sarand.Net.Standard.Base.Utils;
|
|
using Saxonite.Net.Core.Web.Base.Consoles;
|
|
using Saxonite.Net.Core.Web.Online.App;
|
|
using Saxonite.Net.Standard.Base.App;
|
|
using Saxonite.Net.Standard.Base.Consoles;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Saxonite.Net.Core.Web.Online.Consoles
|
|
{
|
|
//=======================================================================
|
|
public class SaxConsoleHelper_Online : SaxConsoleHelper_Web
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
private readonly SaxApplication_Online app;
|
|
|
|
//-------------------------------------------------------------------
|
|
// construction.
|
|
public SaxConsoleHelper_Online(SaxApplication_Online app)
|
|
{
|
|
this.app = app;
|
|
}
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing)
|
|
{
|
|
// Data cache consoles.
|
|
foreach (SaxDataCacheConsole_Online dataCacheConsole in dataCacheConsoles.Values)
|
|
dataCacheConsole.Dispose();
|
|
dataCacheConsoles.Clear();
|
|
// Session data consoles.
|
|
foreach (SaxSessionDataConsole_Online sessionDataConsole in sessionDataConsoles.Values)
|
|
sessionDataConsole.Dispose();
|
|
sessionDataConsoles.Clear();
|
|
}
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Data cache console.
|
|
private readonly Dictionary<ushort, SaxDataCacheConsole_Online> dataCacheConsoles = new Dictionary<ushort, SaxDataCacheConsole_Online>();
|
|
public override SaxDataCacheConsole GetDataCacheConsole(SaxSessionContext sessionContext)
|
|
{
|
|
if (sessionContext == null) throw new NotSupportedException($"{SysUtil.Fn} Session Context must be specified.");
|
|
SaxDataCacheConsole_Online dataCacheConsole = dataCacheConsoles.GetValueOrDefault(sessionContext.Index, null);
|
|
if (dataCacheConsole == null)
|
|
{
|
|
dataCacheConsole = dataCacheConsoles[sessionContext.Index] = new SaxDataCacheConsole_Online(sessionContext);
|
|
}
|
|
return dataCacheConsole;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Session Data console.
|
|
private readonly Dictionary<ushort, SaxSessionDataConsole_Online> sessionDataConsoles = new Dictionary<ushort, SaxSessionDataConsole_Online>();
|
|
public override SaxSessionDataConsole GetSessionDataConsole(SaxSessionContext sessionContext)
|
|
{
|
|
if (sessionContext == null) throw new NotSupportedException($"{SysUtil.Fn} Session Context must be specified.");
|
|
SaxSessionDataConsole_Online sessionDataConsole = sessionDataConsoles.GetValueOrDefault(sessionContext.Index, null);
|
|
if (sessionDataConsole == null)
|
|
{
|
|
sessionDataConsole = sessionDataConsoles[sessionContext.Index] = new SaxSessionDataConsole_Online(sessionContext);
|
|
}
|
|
return sessionDataConsole;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Activity console.
|
|
public override SaxActivityConsole CreateActivityConsole(SaxSessionContext sessionContext)
|
|
{
|
|
return new SaxActivityConsole_Online(sessionContext);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Email console.
|
|
public override SaxEmailConsole CreateEmailConsole(SaxSessionContext sessionContext)
|
|
{
|
|
SaxEmailConsole emailConsole = new SaxEmailConsole_Web(app.EmailConfig);
|
|
return emailConsole;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|