mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-02-18 22:07:44 +01:00
Revert "refactor(Dalamud): switch to file-scoped namespaces"
This reverts commit b5f34c3199.
This commit is contained in:
parent
d473826247
commit
1561fbac00
325 changed files with 45549 additions and 45209 deletions
|
|
@ -1,35 +1,36 @@
|
|||
using System;
|
||||
|
||||
namespace Dalamud.Plugin.Ipc.Exceptions;
|
||||
|
||||
/// <summary>
|
||||
/// This exception is thrown when an IPC errors are encountered.
|
||||
/// </summary>
|
||||
public abstract class IpcError : Exception
|
||||
namespace Dalamud.Plugin.Ipc.Exceptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcError"/> class.
|
||||
/// This exception is thrown when an IPC errors are encountered.
|
||||
/// </summary>
|
||||
public IpcError()
|
||||
public abstract class IpcError : Exception
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcError"/> class.
|
||||
/// </summary>
|
||||
public IpcError()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcError"/> class.
|
||||
/// </summary>
|
||||
/// <param name="message">The message that describes the error.</param>
|
||||
public IpcError(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcError"/> class.
|
||||
/// </summary>
|
||||
/// <param name="message">The message that describes the error.</param>
|
||||
public IpcError(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcError"/> class.
|
||||
/// </summary>
|
||||
/// <param name="message">The message that describes the error.</param>
|
||||
/// <param name="ex">The exception that is the cause of the current exception.</param>
|
||||
public IpcError(string message, Exception ex)
|
||||
: base(message, ex)
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcError"/> class.
|
||||
/// </summary>
|
||||
/// <param name="message">The message that describes the error.</param>
|
||||
/// <param name="ex">The exception that is the cause of the current exception.</param>
|
||||
public IpcError(string message, Exception ex)
|
||||
: base(message, ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,19 @@
|
|||
namespace Dalamud.Plugin.Ipc.Exceptions;
|
||||
|
||||
/// <summary>
|
||||
/// This exception is thrown when an IPC method is invoked and the number of types does not match what was previously registered.
|
||||
/// </summary>
|
||||
public class IpcLengthMismatchError : IpcError
|
||||
namespace Dalamud.Plugin.Ipc.Exceptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcLengthMismatchError"/> class.
|
||||
/// This exception is thrown when an IPC method is invoked and the number of types does not match what was previously registered.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the IPC method.</param>
|
||||
/// <param name="requestedLength">The amount of types requested when checking out the IPC.</param>
|
||||
/// <param name="actualLength">The amount of types registered by the IPC.</param>
|
||||
public IpcLengthMismatchError(string name, int requestedLength, int actualLength)
|
||||
: base($"IPC method {name} has a different number of types than was requested. {requestedLength} != {actualLength}")
|
||||
public class IpcLengthMismatchError : IpcError
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcLengthMismatchError"/> class.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the IPC method.</param>
|
||||
/// <param name="requestedLength">The amount of types requested when checking out the IPC.</param>
|
||||
/// <param name="actualLength">The amount of types registered by the IPC.</param>
|
||||
public IpcLengthMismatchError(string name, int requestedLength, int actualLength)
|
||||
: base($"IPC method {name} has a different number of types than was requested. {requestedLength} != {actualLength}")
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,17 @@
|
|||
namespace Dalamud.Plugin.Ipc.Exceptions;
|
||||
|
||||
/// <summary>
|
||||
/// This exception is thrown when an IPC method is invoked, but no actions or funcs have been registered yet.
|
||||
/// </summary>
|
||||
public class IpcNotReadyError : IpcError
|
||||
namespace Dalamud.Plugin.Ipc.Exceptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcNotReadyError"/> class.
|
||||
/// This exception is thrown when an IPC method is invoked, but no actions or funcs have been registered yet.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the IPC method.</param>
|
||||
public IpcNotReadyError(string name)
|
||||
: base($"IPC method {name} was not registered yet")
|
||||
public class IpcNotReadyError : IpcError
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcNotReadyError"/> class.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the IPC method.</param>
|
||||
public IpcNotReadyError(string name)
|
||||
: base($"IPC method {name} was not registered yet")
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +1,22 @@
|
|||
using System;
|
||||
|
||||
namespace Dalamud.Plugin.Ipc.Exceptions;
|
||||
|
||||
/// <summary>
|
||||
/// This exception is thrown when an IPC method is checked out, but the type does not match what was previously registered.
|
||||
/// </summary>
|
||||
public class IpcTypeMismatchError : IpcError
|
||||
namespace Dalamud.Plugin.Ipc.Exceptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcTypeMismatchError"/> class.
|
||||
/// This exception is thrown when an IPC method is checked out, but the type does not match what was previously registered.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the IPC method.</param>
|
||||
/// <param name="requestedType">The before type.</param>
|
||||
/// <param name="actualType">The after type.</param>
|
||||
/// <param name="ex">The exception that is the cause of the current exception.</param>
|
||||
public IpcTypeMismatchError(string name, Type requestedType, Type actualType, Exception ex)
|
||||
: base($"IPC method {name} blew up when converting from {requestedType.Name} to {actualType}", ex)
|
||||
public class IpcTypeMismatchError : IpcError
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IpcTypeMismatchError"/> class.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the IPC method.</param>
|
||||
/// <param name="requestedType">The before type.</param>
|
||||
/// <param name="actualType">The after type.</param>
|
||||
/// <param name="ex">The exception that is the cause of the current exception.</param>
|
||||
public IpcTypeMismatchError(string name, Type requestedType, Type actualType, Exception ex)
|
||||
: base($"IPC method {name} blew up when converting from {requestedType.Name} to {actualType}", ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,177 +4,178 @@ using Dalamud.Plugin.Ipc.Internal;
|
|||
|
||||
#pragma warning disable SA1402 // File may only contain a single type
|
||||
|
||||
namespace Dalamud.Plugin.Ipc;
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<TRet>
|
||||
namespace Dalamud.Plugin.Ipc
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage();
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage();
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, T5, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, T5, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, T7, TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, T7, TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, T8, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7, T8> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, T8, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7, T8> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, T7, T8, TRet> func);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, T7, T8, TRet> func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
|
||||
public void UnregisterAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
|
||||
public void UnregisterFunc();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma warning restore SA1402 // File may only contain a single type
|
||||
|
|
|
|||
|
|
@ -4,150 +4,151 @@ using Dalamud.Plugin.Ipc.Internal;
|
|||
|
||||
#pragma warning disable SA1402 // File may only contain a single type
|
||||
|
||||
namespace Dalamud.Plugin.Ipc;
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<TRet>
|
||||
namespace Dalamud.Plugin.Ipc
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction();
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc();
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc();
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6, T7> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6, T7> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6, T7> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6, T7> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
|
||||
}
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, T8, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6, T7, T8> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, T8, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6, T7, T8> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6, T7, T8> action);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6, T7, T8> action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma warning restore SA1402 // File may only contain a single type
|
||||
|
|
|
|||
|
|
@ -1,30 +1,31 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Dalamud.Plugin.Ipc.Internal;
|
||||
|
||||
/// <summary>
|
||||
/// This class facilitates inter-plugin communication.
|
||||
/// </summary>
|
||||
internal class CallGate
|
||||
namespace Dalamud.Plugin.Ipc.Internal
|
||||
{
|
||||
private readonly Dictionary<string, CallGateChannel> gates = new();
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CallGate"/> class.
|
||||
/// This class facilitates inter-plugin communication.
|
||||
/// </summary>
|
||||
internal CallGate()
|
||||
internal class CallGate
|
||||
{
|
||||
}
|
||||
private readonly Dictionary<string, CallGateChannel> gates = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets the provider associated with the specified name.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the IPC registration.</param>
|
||||
/// <returns>A CallGate registered under the given name.</returns>
|
||||
public CallGateChannel GetOrCreateChannel(string name)
|
||||
{
|
||||
if (!this.gates.TryGetValue(name, out var gate))
|
||||
gate = this.gates[name] = new CallGateChannel(name);
|
||||
return gate;
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CallGate"/> class.
|
||||
/// </summary>
|
||||
internal CallGate()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the provider associated with the specified name.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the IPC registration.</param>
|
||||
/// <returns>A CallGate registered under the given name.</returns>
|
||||
public CallGateChannel GetOrCreateChannel(string name)
|
||||
{
|
||||
if (!this.gates.TryGetValue(name, out var gate))
|
||||
gate = this.gates[name] = new CallGateChannel(name);
|
||||
return gate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,179 +7,180 @@ using Dalamud.Plugin.Ipc.Exceptions;
|
|||
using Newtonsoft.Json;
|
||||
using Serilog;
|
||||
|
||||
namespace Dalamud.Plugin.Ipc.Internal;
|
||||
|
||||
/// <summary>
|
||||
/// This class implements the channels and serialization needed for the typed gates to interact with each other.
|
||||
/// </summary>
|
||||
internal class CallGateChannel
|
||||
namespace Dalamud.Plugin.Ipc.Internal
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CallGateChannel"/> class.
|
||||
/// This class implements the channels and serialization needed for the typed gates to interact with each other.
|
||||
/// </summary>
|
||||
/// <param name="name">The name of this IPC registration.</param>
|
||||
public CallGateChannel(string name)
|
||||
internal class CallGateChannel
|
||||
{
|
||||
this.Name = name;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the name of the IPC registration.
|
||||
/// </summary>
|
||||
public string Name { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of delegate subscriptions for when SendMessage is called.
|
||||
/// </summary>
|
||||
public List<Delegate> Subscriptions { get; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets an action for when InvokeAction is called.
|
||||
/// </summary>
|
||||
public Delegate Action { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a func for when InvokeFunc is called.
|
||||
/// </summary>
|
||||
public Delegate Func { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Invoke all actions that have subscribed to this IPC.
|
||||
/// </summary>
|
||||
/// <param name="args">Message arguments.</param>
|
||||
internal void SendMessage(object?[]? args)
|
||||
{
|
||||
if (this.Subscriptions.Count == 0)
|
||||
return;
|
||||
|
||||
foreach (var subscription in this.Subscriptions)
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CallGateChannel"/> class.
|
||||
/// </summary>
|
||||
/// <param name="name">The name of this IPC registration.</param>
|
||||
public CallGateChannel(string name)
|
||||
{
|
||||
var methodInfo = subscription.GetMethodInfo();
|
||||
this.Name = name;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the name of the IPC registration.
|
||||
/// </summary>
|
||||
public string Name { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of delegate subscriptions for when SendMessage is called.
|
||||
/// </summary>
|
||||
public List<Delegate> Subscriptions { get; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets an action for when InvokeAction is called.
|
||||
/// </summary>
|
||||
public Delegate Action { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a func for when InvokeFunc is called.
|
||||
/// </summary>
|
||||
public Delegate Func { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Invoke all actions that have subscribed to this IPC.
|
||||
/// </summary>
|
||||
/// <param name="args">Message arguments.</param>
|
||||
internal void SendMessage(object?[]? args)
|
||||
{
|
||||
if (this.Subscriptions.Count == 0)
|
||||
return;
|
||||
|
||||
foreach (var subscription in this.Subscriptions)
|
||||
{
|
||||
var methodInfo = subscription.GetMethodInfo();
|
||||
this.CheckAndConvertArgs(args, methodInfo);
|
||||
|
||||
subscription.DynamicInvoke(args);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoke an action registered for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="args">Action arguments.</param>
|
||||
/// <exception cref="IpcNotReadyError">This is thrown when the IPC publisher has not registered a func for calling yet.</exception>
|
||||
internal void InvokeAction(object?[]? args)
|
||||
{
|
||||
if (this.Action == null)
|
||||
throw new IpcNotReadyError(this.Name);
|
||||
|
||||
var methodInfo = this.Action.GetMethodInfo();
|
||||
this.CheckAndConvertArgs(args, methodInfo);
|
||||
|
||||
subscription.DynamicInvoke(args);
|
||||
this.Action.DynamicInvoke(args);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoke an action registered for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="args">Action arguments.</param>
|
||||
/// <exception cref="IpcNotReadyError">This is thrown when the IPC publisher has not registered a func for calling yet.</exception>
|
||||
internal void InvokeAction(object?[]? args)
|
||||
{
|
||||
if (this.Action == null)
|
||||
throw new IpcNotReadyError(this.Name);
|
||||
|
||||
var methodInfo = this.Action.GetMethodInfo();
|
||||
this.CheckAndConvertArgs(args, methodInfo);
|
||||
|
||||
this.Action.DynamicInvoke(args);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoke a function registered for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="args">Func arguments.</param>
|
||||
/// <returns>The return value.</returns>
|
||||
/// <typeparam name="TRet">The return type.</typeparam>
|
||||
/// <exception cref="IpcNotReadyError">This is thrown when the IPC publisher has not registered a func for calling yet.</exception>
|
||||
internal TRet InvokeFunc<TRet>(object?[]? args)
|
||||
{
|
||||
if (this.Func == null)
|
||||
throw new IpcNotReadyError(this.Name);
|
||||
|
||||
var methodInfo = this.Func.GetMethodInfo();
|
||||
this.CheckAndConvertArgs(args, methodInfo);
|
||||
|
||||
var result = this.Func.DynamicInvoke(args);
|
||||
|
||||
if (typeof(TRet) != methodInfo.ReturnType)
|
||||
result = this.ConvertObject(result, typeof(TRet));
|
||||
|
||||
return (TRet)result;
|
||||
}
|
||||
|
||||
private void CheckAndConvertArgs(object?[]? args, MethodInfo methodInfo)
|
||||
{
|
||||
var paramTypes = methodInfo.GetParameters()
|
||||
.Select(pi => pi.ParameterType).ToArray();
|
||||
|
||||
if (args.Length != paramTypes.Length)
|
||||
throw new IpcLengthMismatchError(this.Name, args.Length, paramTypes.Length);
|
||||
|
||||
for (var i = 0; i < args.Length; i++)
|
||||
/// <summary>
|
||||
/// Invoke a function registered for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="args">Func arguments.</param>
|
||||
/// <returns>The return value.</returns>
|
||||
/// <typeparam name="TRet">The return type.</typeparam>
|
||||
/// <exception cref="IpcNotReadyError">This is thrown when the IPC publisher has not registered a func for calling yet.</exception>
|
||||
internal TRet InvokeFunc<TRet>(object?[]? args)
|
||||
{
|
||||
var arg = args[i];
|
||||
var paramType = paramTypes[i];
|
||||
if (this.Func == null)
|
||||
throw new IpcNotReadyError(this.Name);
|
||||
|
||||
var argType = arg.GetType();
|
||||
if (argType != paramType)
|
||||
var methodInfo = this.Func.GetMethodInfo();
|
||||
this.CheckAndConvertArgs(args, methodInfo);
|
||||
|
||||
var result = this.Func.DynamicInvoke(args);
|
||||
|
||||
if (typeof(TRet) != methodInfo.ReturnType)
|
||||
result = this.ConvertObject(result, typeof(TRet));
|
||||
|
||||
return (TRet)result;
|
||||
}
|
||||
|
||||
private void CheckAndConvertArgs(object?[]? args, MethodInfo methodInfo)
|
||||
{
|
||||
var paramTypes = methodInfo.GetParameters()
|
||||
.Select(pi => pi.ParameterType).ToArray();
|
||||
|
||||
if (args.Length != paramTypes.Length)
|
||||
throw new IpcLengthMismatchError(this.Name, args.Length, paramTypes.Length);
|
||||
|
||||
for (var i = 0; i < args.Length; i++)
|
||||
{
|
||||
// check the inheritance tree
|
||||
var baseTypes = this.GenerateTypes(argType.BaseType);
|
||||
if (baseTypes.Any(t => t == paramType))
|
||||
var arg = args[i];
|
||||
var paramType = paramTypes[i];
|
||||
|
||||
var argType = arg.GetType();
|
||||
if (argType != paramType)
|
||||
{
|
||||
// The source type inherits from the destination type
|
||||
continue;
|
||||
// check the inheritance tree
|
||||
var baseTypes = this.GenerateTypes(argType.BaseType);
|
||||
if (baseTypes.Any(t => t == paramType))
|
||||
{
|
||||
// The source type inherits from the destination type
|
||||
continue;
|
||||
}
|
||||
|
||||
args[i] = this.ConvertObject(arg, paramType);
|
||||
}
|
||||
|
||||
args[i] = this.ConvertObject(arg, paramType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<Type> GenerateTypes(Type type)
|
||||
{
|
||||
while (type != null && type != typeof(object))
|
||||
private IEnumerable<Type> GenerateTypes(Type type)
|
||||
{
|
||||
yield return type;
|
||||
type = type.BaseType;
|
||||
}
|
||||
}
|
||||
|
||||
private object? ConvertObject(object? obj, Type type)
|
||||
{
|
||||
var json = JsonConvert.SerializeObject(obj);
|
||||
|
||||
try
|
||||
{
|
||||
return JsonConvert.DeserializeObject(json, type);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Log.Verbose($"Could not convert {obj.GetType().Name} to {type.Name}, will look for compatible type instead");
|
||||
}
|
||||
|
||||
// If type -> type fails, try to find an object that matches.
|
||||
var sourceType = obj.GetType();
|
||||
var fieldNames = sourceType.GetFields(BindingFlags.Public | BindingFlags.Instance)
|
||||
.Select(f => f.Name);
|
||||
var propNames = sourceType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
|
||||
.Select(p => p.Name);
|
||||
|
||||
var assignableTypes = type.Assembly.GetTypes()
|
||||
.Where(t => type.IsAssignableFrom(t) && type != t)
|
||||
.ToArray();
|
||||
|
||||
foreach (var assignableType in assignableTypes)
|
||||
{
|
||||
var matchesFields = assignableType.GetFields().All(f => fieldNames.Contains(f.Name));
|
||||
var matchesProps = assignableType.GetProperties().All(p => propNames.Contains(p.Name));
|
||||
if (matchesFields && matchesProps)
|
||||
while (type != null && type != typeof(object))
|
||||
{
|
||||
type = assignableType;
|
||||
break;
|
||||
yield return type;
|
||||
type = type.BaseType;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
private object? ConvertObject(object? obj, Type type)
|
||||
{
|
||||
return JsonConvert.DeserializeObject(json, type);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new IpcTypeMismatchError(this.Name, obj.GetType(), type, ex);
|
||||
var json = JsonConvert.SerializeObject(obj);
|
||||
|
||||
try
|
||||
{
|
||||
return JsonConvert.DeserializeObject(json, type);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Log.Verbose($"Could not convert {obj.GetType().Name} to {type.Name}, will look for compatible type instead");
|
||||
}
|
||||
|
||||
// If type -> type fails, try to find an object that matches.
|
||||
var sourceType = obj.GetType();
|
||||
var fieldNames = sourceType.GetFields(BindingFlags.Public | BindingFlags.Instance)
|
||||
.Select(f => f.Name);
|
||||
var propNames = sourceType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
|
||||
.Select(p => p.Name);
|
||||
|
||||
var assignableTypes = type.Assembly.GetTypes()
|
||||
.Where(t => type.IsAssignableFrom(t) && type != t)
|
||||
.ToArray();
|
||||
|
||||
foreach (var assignableType in assignableTypes)
|
||||
{
|
||||
var matchesFields = assignableType.GetFields().All(f => fieldNames.Contains(f.Name));
|
||||
var matchesProps = assignableType.GetProperties().All(p => propNames.Contains(p.Name));
|
||||
if (matchesFields && matchesProps)
|
||||
{
|
||||
type = assignableType;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return JsonConvert.DeserializeObject(json, type);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new IpcTypeMismatchError(this.Name, obj.GetType(), type, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,348 +2,349 @@ using System;
|
|||
|
||||
#pragma warning disable SA1402 // File may only contain a single type
|
||||
|
||||
namespace Dalamud.Plugin.Ipc.Internal;
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<TRet> : CallGatePubSubBase, ICallGateProvider<TRet>, ICallGateSubscriber<TRet>
|
||||
namespace Dalamud.Plugin.Ipc.Internal
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<TRet> : CallGatePubSubBase, ICallGateProvider<TRet>, ICallGateSubscriber<TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage()
|
||||
=> base.SendMessage();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction()
|
||||
=> base.InvokeAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc()
|
||||
=> this.InvokeFunc<TRet>();
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage()
|
||||
=> base.SendMessage();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction()
|
||||
=> base.InvokeAction();
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc()
|
||||
=> this.InvokeFunc<TRet>();
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, TRet> : CallGatePubSubBase, ICallGateProvider<T1, TRet>, ICallGateSubscriber<T1, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, TRet> : CallGatePubSubBase, ICallGateProvider<T1, TRet>, ICallGateSubscriber<T1, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1)
|
||||
=> base.SendMessage(arg1);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1)
|
||||
=> base.InvokeAction(arg1);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1)
|
||||
=> this.InvokeFunc<TRet>(arg1);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1)
|
||||
=> base.SendMessage(arg1);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1)
|
||||
=> base.InvokeAction(arg1);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1)
|
||||
=> this.InvokeFunc<TRet>(arg1);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, TRet>, ICallGateSubscriber<T1, T2, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, TRet>, ICallGateSubscriber<T1, T2, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2)
|
||||
=> base.SendMessage(arg1, arg2);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2)
|
||||
=> base.InvokeAction(arg1, arg2);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2)
|
||||
=> base.SendMessage(arg1, arg2);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2)
|
||||
=> base.InvokeAction(arg1, arg2);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, TRet>, ICallGateSubscriber<T1, T2, T3, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, TRet>, ICallGateSubscriber<T1, T2, T3, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3)
|
||||
=> base.SendMessage(arg1, arg2, arg3);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3)
|
||||
=> base.InvokeAction(arg1, arg2, arg3);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3)
|
||||
=> base.SendMessage(arg1, arg2, arg3);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3)
|
||||
=> base.InvokeAction(arg1, arg2, arg3);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, TRet>, ICallGateSubscriber<T1, T2, T3, T4, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, TRet>, ICallGateSubscriber<T1, T2, T3, T4, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, T5, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, T5, TRet>, ICallGateSubscriber<T1, T2, T3, T4, T5, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, T5, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, T5, TRet>, ICallGateSubscriber<T1, T2, T3, T4, T5, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4, arg5);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4, arg5);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4, arg5);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4, arg5);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4, arg5);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4, arg5);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, T5, T6, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, T5, T6, TRet>, ICallGateSubscriber<T1, T2, T3, T4, T5, T6, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, T5, T6, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, T5, T6, TRet>, ICallGateSubscriber<T1, T2, T3, T4, T5, T6, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4, arg5, arg6);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, T5, T6, T7, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, TRet>, ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, T5, T6, T7, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, TRet>, ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, T7, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6, T7> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6, T7> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, T7, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6, T7> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6, T7> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, T5, T6, T7, T8, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, T8, TRet>, ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, T8, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
/// <inheritdoc cref="CallGatePubSubBase"/>
|
||||
internal class CallGatePubSub<T1, T2, T3, T4, T5, T6, T7, T8, TRet> : CallGatePubSubBase, ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, T8, TRet>, ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, T8, TRet>
|
||||
{
|
||||
/// <inheritdoc cref="CallGatePubSubBase(string)"/>
|
||||
public CallGatePubSub(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7, T8> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, T7, T8, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6, T7, T8> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6, T7, T8> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7, T8> action)
|
||||
=> base.RegisterAction(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
|
||||
public void RegisterFunc(Func<T1, T2, T3, T4, T5, T6, T7, T8, TRet> func)
|
||||
=> base.RegisterFunc(func);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
|
||||
public void SendMessage(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
|
||||
=> base.SendMessage(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
|
||||
public void Subscribe(Action<T1, T2, T3, T4, T5, T6, T7, T8> action)
|
||||
=> base.Subscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.Unsubscribe"/>
|
||||
public void Unsubscribe(Action<T1, T2, T3, T4, T5, T6, T7, T8> action)
|
||||
=> base.Unsubscribe(action);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeAction"/>
|
||||
public void InvokeAction(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
|
||||
=> base.InvokeAction(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
|
||||
|
||||
/// <inheritdoc cref="CallGatePubSubBase.InvokeFunc"/>
|
||||
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8)
|
||||
=> this.InvokeFunc<TRet>(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
|
||||
}
|
||||
|
||||
#pragma warning restore SA1402 // File may only contain a single type
|
||||
|
|
|
|||
|
|
@ -2,89 +2,90 @@ using System;
|
|||
|
||||
using Dalamud.Plugin.Ipc.Exceptions;
|
||||
|
||||
namespace Dalamud.Plugin.Ipc.Internal;
|
||||
|
||||
/// <summary>
|
||||
/// This class facilitates inter-plugin communication.
|
||||
/// </summary>
|
||||
internal abstract class CallGatePubSubBase
|
||||
namespace Dalamud.Plugin.Ipc.Internal
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CallGatePubSubBase"/> class.
|
||||
/// This class facilitates inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="name">The name of the IPC registration.</param>
|
||||
public CallGatePubSubBase(string name)
|
||||
internal abstract class CallGatePubSubBase
|
||||
{
|
||||
this.Channel = Service<CallGate>.Get().GetOrCreateChannel(name);
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CallGatePubSubBase"/> class.
|
||||
/// </summary>
|
||||
/// <param name="name">The name of the IPC registration.</param>
|
||||
public CallGatePubSubBase(string name)
|
||||
{
|
||||
this.Channel = Service<CallGate>.Get().GetOrCreateChannel(name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the underlying channel implementation.
|
||||
/// </summary>
|
||||
protected CallGateChannel Channel { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Removes a registered Action from inter-plugin communication.
|
||||
/// </summary>
|
||||
public void UnregisterAction()
|
||||
=> this.Channel.Action = null;
|
||||
|
||||
/// <summary>
|
||||
/// Removes a registered Func from inter-plugin communication.
|
||||
/// </summary>
|
||||
public void UnregisterFunc()
|
||||
=> this.Channel.Func = null;
|
||||
|
||||
/// <summary>
|
||||
/// Registers an Action for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="action">Action to register.</param>
|
||||
private protected void RegisterAction(Delegate action)
|
||||
=> this.Channel.Action = action;
|
||||
|
||||
/// <summary>
|
||||
/// Registers a Func for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="func">Func to register.</param>
|
||||
private protected void RegisterFunc(Delegate func)
|
||||
=> this.Channel.Func = func;
|
||||
|
||||
/// <summary>
|
||||
/// Subscribe an expression to this registration.
|
||||
/// </summary>
|
||||
/// <param name="action">Action to subscribe.</param>
|
||||
private protected void Subscribe(Delegate action)
|
||||
=> this.Channel.Subscriptions.Add(action);
|
||||
|
||||
/// <summary>
|
||||
/// Unsubscribe an expression from this registration.
|
||||
/// </summary>
|
||||
/// <param name="action">Action to unsubscribe.</param>
|
||||
private protected void Unsubscribe(Delegate action)
|
||||
=> this.Channel.Subscriptions.Remove(action);
|
||||
|
||||
/// <summary>
|
||||
/// Invoke an action registered for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="args">Action arguments.</param>
|
||||
/// <exception cref="IpcNotReadyError">This is thrown when the IPC publisher has not registered an action for calling yet.</exception>
|
||||
private protected void InvokeAction(params object?[]? args)
|
||||
=> this.Channel.InvokeAction(args);
|
||||
|
||||
/// <summary>
|
||||
/// Invoke a function registered for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="args">Parameter args.</param>
|
||||
/// <returns>The return value.</returns>
|
||||
/// <typeparam name="TRet">The return type.</typeparam>
|
||||
/// <exception cref="IpcNotReadyError">This is thrown when the IPC publisher has not registered a func for calling yet.</exception>
|
||||
private protected TRet InvokeFunc<TRet>(params object?[]? args)
|
||||
=> this.Channel.InvokeFunc<TRet>(args);
|
||||
|
||||
/// <summary>
|
||||
/// Invoke all actions that have subscribed to this IPC.
|
||||
/// </summary>
|
||||
/// <param name="args">Delegate arguments.</param>
|
||||
private protected void SendMessage(params object?[]? args)
|
||||
=> this.Channel.SendMessage(args);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the underlying channel implementation.
|
||||
/// </summary>
|
||||
protected CallGateChannel Channel { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Removes a registered Action from inter-plugin communication.
|
||||
/// </summary>
|
||||
public void UnregisterAction()
|
||||
=> this.Channel.Action = null;
|
||||
|
||||
/// <summary>
|
||||
/// Removes a registered Func from inter-plugin communication.
|
||||
/// </summary>
|
||||
public void UnregisterFunc()
|
||||
=> this.Channel.Func = null;
|
||||
|
||||
/// <summary>
|
||||
/// Registers an Action for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="action">Action to register.</param>
|
||||
private protected void RegisterAction(Delegate action)
|
||||
=> this.Channel.Action = action;
|
||||
|
||||
/// <summary>
|
||||
/// Registers a Func for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="func">Func to register.</param>
|
||||
private protected void RegisterFunc(Delegate func)
|
||||
=> this.Channel.Func = func;
|
||||
|
||||
/// <summary>
|
||||
/// Subscribe an expression to this registration.
|
||||
/// </summary>
|
||||
/// <param name="action">Action to subscribe.</param>
|
||||
private protected void Subscribe(Delegate action)
|
||||
=> this.Channel.Subscriptions.Add(action);
|
||||
|
||||
/// <summary>
|
||||
/// Unsubscribe an expression from this registration.
|
||||
/// </summary>
|
||||
/// <param name="action">Action to unsubscribe.</param>
|
||||
private protected void Unsubscribe(Delegate action)
|
||||
=> this.Channel.Subscriptions.Remove(action);
|
||||
|
||||
/// <summary>
|
||||
/// Invoke an action registered for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="args">Action arguments.</param>
|
||||
/// <exception cref="IpcNotReadyError">This is thrown when the IPC publisher has not registered an action for calling yet.</exception>
|
||||
private protected void InvokeAction(params object?[]? args)
|
||||
=> this.Channel.InvokeAction(args);
|
||||
|
||||
/// <summary>
|
||||
/// Invoke a function registered for inter-plugin communication.
|
||||
/// </summary>
|
||||
/// <param name="args">Parameter args.</param>
|
||||
/// <returns>The return value.</returns>
|
||||
/// <typeparam name="TRet">The return type.</typeparam>
|
||||
/// <exception cref="IpcNotReadyError">This is thrown when the IPC publisher has not registered a func for calling yet.</exception>
|
||||
private protected TRet InvokeFunc<TRet>(params object?[]? args)
|
||||
=> this.Channel.InvokeFunc<TRet>(args);
|
||||
|
||||
/// <summary>
|
||||
/// Invoke all actions that have subscribed to this IPC.
|
||||
/// </summary>
|
||||
/// <param name="args">Delegate arguments.</param>
|
||||
private protected void SendMessage(params object?[]? args)
|
||||
=> this.Channel.SendMessage(args);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue