Files
SethDiscordBot/Modules/CppCompatibilityModule/ExternalApplicationHandler.cs

68 lines
2.2 KiB
C#

using DiscordBotCore;
using DiscordBotCore.Logging;
using DiscordBotCore.Others;
namespace CppCompatibilityModule;
public class ExternalApplicationHandler
{
private readonly ILogger _Logger;
private ExternalApplicationManager? _ExternalApplicationManager;
public ExternalApplicationHandler(ILogger logger)
{
_Logger = logger;
_ExternalApplicationManager = new ExternalApplicationManager(logger);
}
public Guid CreateApplication(string dllFilePath)
{
if (_ExternalApplicationManager is null)
{
_Logger.Log("Failed to create application because the manager is not initialized. This should have never happened in the first place !!!", this, LogType.Critical);
return Guid.Empty;
}
if (_ExternalApplicationManager.TryCreateApplication(dllFilePath, out Guid appId))
{
return appId;
}
return Guid.Empty;
}
public void StopApplication(Guid applicationId)
{
if (_ExternalApplicationManager is null)
{
_Logger.Log("Failed to stop application because the manager is not initialized. This should have never happened in the first place!!!", this, LogType.Critical);
return;
}
_ExternalApplicationManager.FreeApplication(applicationId);
}
public void CallFunctionWithParameter(Guid appId, string functionName, ref object parameter)
{
if (_ExternalApplicationManager is null)
{
_Logger.Log("Failed to call function because the manager is not initialized. This should have never happened in the first place!!!", this, LogType.Critical);
return;
}
_ExternalApplicationManager.ExecuteApplicationFunctionWithParameter(appId, functionName, ref parameter);
}
public void CallFunctionWithoutParameter(Guid appId, string functionName)
{
if (_ExternalApplicationManager is null)
{
_Logger.Log("Failed to call function because the manager is not initialized. This should have never happened in the first place!!!", this, LogType.Critical);
return;
}
_ExternalApplicationManager.ExecuteApplicationFunctionWithoutParameter(appId, functionName);
}
}