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