mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-18 05:47:52 +01:00
Use external library for API interface and IPC.
This commit is contained in:
parent
b3f048bfe6
commit
918d5db6a6
69 changed files with 4026 additions and 1873 deletions
163
tmp/Helpers/FuncSubscriber.cs
Normal file
163
tmp/Helpers/FuncSubscriber.cs
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
using System;
|
||||
using Dalamud.Logging;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Plugin.Ipc;
|
||||
using Dalamud.Plugin.Ipc.Exceptions;
|
||||
|
||||
namespace Penumbra.Api.Helpers;
|
||||
|
||||
public readonly struct FuncSubscriber< TRet >
|
||||
{
|
||||
private readonly string _label;
|
||||
private readonly ICallGateSubscriber< TRet >? _subscriber;
|
||||
|
||||
public bool Valid
|
||||
=> _subscriber != null;
|
||||
|
||||
public FuncSubscriber( DalamudPluginInterface pi, string label )
|
||||
{
|
||||
_label = label;
|
||||
try
|
||||
{
|
||||
_subscriber = pi.GetIpcSubscriber< TRet >( label );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
PluginLog.Error( $"Error registering IPC Subscriber for {label}\n{e}" );
|
||||
_subscriber = null;
|
||||
}
|
||||
}
|
||||
|
||||
public TRet Invoke()
|
||||
=> _subscriber != null ? _subscriber.InvokeFunc() : throw new IpcNotReadyError( _label );
|
||||
}
|
||||
|
||||
public readonly struct FuncSubscriber< T1, TRet >
|
||||
{
|
||||
private readonly string _label;
|
||||
private readonly ICallGateSubscriber< T1, TRet >? _subscriber;
|
||||
|
||||
public bool Valid
|
||||
=> _subscriber != null;
|
||||
|
||||
public FuncSubscriber( DalamudPluginInterface pi, string label )
|
||||
{
|
||||
_label = label;
|
||||
try
|
||||
{
|
||||
_subscriber = pi.GetIpcSubscriber< T1, TRet >( label );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
PluginLog.Error( $"Error registering IPC Subscriber for {label}\n{e}" );
|
||||
_subscriber = null;
|
||||
}
|
||||
}
|
||||
|
||||
public TRet Invoke( T1 a )
|
||||
=> _subscriber != null ? _subscriber.InvokeFunc( a ) : throw new IpcNotReadyError( _label );
|
||||
}
|
||||
|
||||
public readonly struct FuncSubscriber< T1, T2, TRet >
|
||||
{
|
||||
private readonly string _label;
|
||||
private readonly ICallGateSubscriber< T1, T2, TRet >? _subscriber;
|
||||
|
||||
public bool Valid
|
||||
=> _subscriber != null;
|
||||
|
||||
public FuncSubscriber( DalamudPluginInterface pi, string label )
|
||||
{
|
||||
_label = label;
|
||||
try
|
||||
{
|
||||
_subscriber = pi.GetIpcSubscriber< T1, T2, TRet >( label );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
PluginLog.Error( $"Error registering IPC Subscriber for {label}\n{e}" );
|
||||
_subscriber = null;
|
||||
}
|
||||
}
|
||||
|
||||
public TRet Invoke( T1 a, T2 b )
|
||||
=> _subscriber != null ? _subscriber.InvokeFunc( a, b ) : throw new IpcNotReadyError( _label );
|
||||
}
|
||||
|
||||
public readonly struct FuncSubscriber< T1, T2, T3, TRet >
|
||||
{
|
||||
private readonly string _label;
|
||||
private readonly ICallGateSubscriber< T1, T2, T3, TRet >? _subscriber;
|
||||
|
||||
public bool Valid
|
||||
=> _subscriber != null;
|
||||
|
||||
public FuncSubscriber( DalamudPluginInterface pi, string label )
|
||||
{
|
||||
_label = label;
|
||||
try
|
||||
{
|
||||
_subscriber = pi.GetIpcSubscriber< T1, T2, T3, TRet >( label );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
PluginLog.Error( $"Error registering IPC Subscriber for {label}\n{e}" );
|
||||
_subscriber = null;
|
||||
}
|
||||
}
|
||||
|
||||
public TRet Invoke( T1 a, T2 b, T3 c )
|
||||
=> _subscriber != null ? _subscriber.InvokeFunc( a, b, c ) : throw new IpcNotReadyError( _label );
|
||||
}
|
||||
|
||||
public readonly struct FuncSubscriber< T1, T2, T3, T4, TRet >
|
||||
{
|
||||
private readonly string _label;
|
||||
private readonly ICallGateSubscriber< T1, T2, T3, T4, TRet >? _subscriber;
|
||||
|
||||
public bool Valid
|
||||
=> _subscriber != null;
|
||||
|
||||
public FuncSubscriber( DalamudPluginInterface pi, string label )
|
||||
{
|
||||
_label = label;
|
||||
try
|
||||
{
|
||||
_subscriber = pi.GetIpcSubscriber< T1, T2, T3, T4, TRet >( label );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
PluginLog.Error( $"Error registering IPC Subscriber for {label}\n{e}" );
|
||||
_subscriber = null;
|
||||
}
|
||||
}
|
||||
|
||||
public TRet Invoke( T1 a, T2 b, T3 c, T4 d )
|
||||
=> _subscriber != null ? _subscriber.InvokeFunc( a, b, c, d ) : throw new IpcNotReadyError( _label );
|
||||
}
|
||||
|
||||
public readonly struct FuncSubscriber< T1, T2, T3, T4, T5, TRet >
|
||||
{
|
||||
private readonly string _label;
|
||||
private readonly ICallGateSubscriber< T1, T2, T3, T4, T5, TRet >? _subscriber;
|
||||
|
||||
public bool Valid
|
||||
=> _subscriber != null;
|
||||
|
||||
public FuncSubscriber( DalamudPluginInterface pi, string label )
|
||||
{
|
||||
_label = label;
|
||||
try
|
||||
{
|
||||
_subscriber = pi.GetIpcSubscriber< T1, T2, T3, T4, T5, TRet >( label );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
PluginLog.Error( $"Error registering IPC Subscriber for {label}\n{e}" );
|
||||
_subscriber = null;
|
||||
}
|
||||
}
|
||||
|
||||
public TRet Invoke( T1 a, T2 b, T3 c, T4 d, T5 e )
|
||||
=> _subscriber != null ? _subscriber.InvokeFunc( a, b, c, d, e ) : throw new IpcNotReadyError( _label );
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue