using Dalamud.Plugin;
using Dalamud.Plugin.Ipc;
namespace Penumbra.Api.Helpers;
///
/// Specialized disposable Provider for Actions.
///
public sealed class ActionProvider : IDisposable
{
private ICallGateProvider? _provider;
public ActionProvider(IDalamudPluginInterface pi, string label, Action action)
{
try
{
_provider = pi.GetIpcProvider(label);
}
catch (Exception e)
{
PluginLogHelper.WriteError(pi, $"Error registering IPC Provider for {label}\n{e}");
_provider = null;
}
_provider?.RegisterAction(action);
}
public void Dispose()
{
_provider?.UnregisterAction();
_provider = null;
GC.SuppressFinalize(this);
}
~ActionProvider()
=> Dispose();
}
///
/// Specialized disposable Provider for Actions.
///
public sealed class ActionProvider : IDisposable
{
private ICallGateProvider? _provider;
public ActionProvider(IDalamudPluginInterface pi, string label, Action action)
{
try
{
_provider = pi.GetIpcProvider(label);
}
catch (Exception e)
{
PluginLogHelper.WriteError(pi, $"Error registering IPC Provider for {label}\n{e}");
_provider = null;
}
_provider?.RegisterAction(action);
}
public void Dispose()
{
_provider?.UnregisterAction();
_provider = null;
GC.SuppressFinalize(this);
}
~ActionProvider()
=> Dispose();
}
///
///
///
public sealed class ActionProvider : IDisposable
{
private ICallGateProvider? _provider;
public ActionProvider(IDalamudPluginInterface pi, string label, Action action)
{
try
{
_provider = pi.GetIpcProvider(label);
}
catch (Exception e)
{
PluginLogHelper.WriteError(pi, $"Error registering IPC Provider for {label}\n{e}");
_provider = null;
}
_provider?.RegisterAction(action);
}
public void Dispose()
{
_provider?.UnregisterAction();
_provider = null;
GC.SuppressFinalize(this);
}
~ActionProvider()
=> Dispose();
}
///
///
///
public sealed class ActionProvider : IDisposable
{
private ICallGateProvider? _provider;
public ActionProvider(IDalamudPluginInterface pi, string label, Action action)
{
try
{
_provider = pi.GetIpcProvider(label);
}
catch (Exception e)
{
PluginLogHelper.WriteError(pi, $"Error registering IPC Provider for {label}\n{e}");
_provider = null;
}
_provider?.RegisterAction(action);
}
public void Dispose()
{
_provider?.UnregisterAction();
_provider = null;
GC.SuppressFinalize(this);
}
~ActionProvider()
=> Dispose();
}