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