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(); }