Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add new IPC methods, and docs #2042

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 34 additions & 72 deletions Dalamud/Plugin/Ipc/ICallGateProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,173 +4,135 @@

namespace Dalamud.Plugin.Ipc;

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateProvider<TRet>
/// <summary>
/// The backing interface for the provider ("server") half of an IPC channel. This interface is used to expose methods
/// to other plugins via RPC, as well as to allow other plugins to subscribe to notifications from this plugin.
/// </summary>
public interface ICallGateProvider
{
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
public void RegisterAction(Action action);

/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
public void RegisterFunc(Func<TRet> func);

/// <inheritdoc cref="CallGatePubSubBase.SubscriptionCount"/>
public int SubscriptionCount { get; }

/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
public void UnregisterAction();

/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
public void UnregisterFunc();
}

/// <inheritdoc cref="ICallGateProvider"/>
public interface ICallGateProvider<TRet> : ICallGateProvider
{
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
public void RegisterAction(Action action);

/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
public void RegisterFunc(Func<TRet> func);

/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
public void SendMessage();
}

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateProvider<T1, TRet>
/// <inheritdoc cref="ICallGateProvider"/>
public interface ICallGateProvider<T1, TRet> : ICallGateProvider
{
/// <inheritdoc cref="CallGatePubSubBase.RegisterAction"/>
public void RegisterAction(Action<T1> action);

/// <inheritdoc cref="CallGatePubSubBase.RegisterFunc"/>
public void RegisterFunc(Func<T1, TRet> func);

/// <inheritdoc cref="CallGatePubSubBase.UnregisterAction"/>
public void UnregisterAction();

/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
public void UnregisterFunc();

/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
public void SendMessage(T1 arg1);
}

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateProvider<T1, T2, TRet>
/// <inheritdoc cref="ICallGateProvider"/>
public interface ICallGateProvider<T1, T2, TRet> : ICallGateProvider
{
/// <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.UnregisterAction"/>
public void UnregisterAction();

/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
public void UnregisterFunc();

/// <inheritdoc cref="CallGatePubSubBase.SendMessage"/>
public void SendMessage(T1 arg1, T2 arg2);
}

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateProvider<T1, T2, T3, TRet>
/// <inheritdoc cref="ICallGateProvider"/>
public interface ICallGateProvider<T1, T2, T3, TRet> : ICallGateProvider
{
/// <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.UnregisterAction"/>
public void UnregisterAction();

/// <inheritdoc cref="CallGatePubSubBase.UnregisterFunc"/>
public void UnregisterFunc();

/// <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="ICallGateProvider"/>
public interface ICallGateProvider<T1, T2, T3, T4, TRet> : ICallGateProvider
{
/// <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.UnregisterAction"/>
public void UnregisterAction();

/// <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"/>
public interface ICallGateProvider<T1, T2, T3, T4, T5, TRet>
/// <inheritdoc cref="ICallGateProvider"/>
public interface ICallGateProvider<T1, T2, T3, T4, T5, TRet> : ICallGateProvider
{
/// <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.UnregisterAction"/>
public void UnregisterAction();

/// <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"/>
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, TRet>
/// <inheritdoc cref="ICallGateProvider"/>
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, TRet> : ICallGateProvider
{
/// <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.UnregisterAction"/>
public void UnregisterAction();

/// <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"/>
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, TRet>
/// <inheritdoc cref="ICallGateProvider"/>
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, TRet> : ICallGateProvider
{
/// <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.UnregisterAction"/>
public void UnregisterAction();

/// <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"/>
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, T8, TRet>
/// <inheritdoc cref="ICallGateProvider"/>
public interface ICallGateProvider<T1, T2, T3, T4, T5, T6, T7, T8, TRet> : ICallGateProvider
{
/// <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.UnregisterAction"/>
public void UnregisterAction();

/// <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);
}
Expand Down
31 changes: 22 additions & 9 deletions Dalamud/Plugin/Ipc/ICallGateSubscriber.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,21 @@

namespace Dalamud.Plugin.Ipc;

/// <summary>
/// An interface for all IPC subscribers.
/// </summary>
public interface ICallGateSubscriber
{

/// <inheritdoc cref="CallGatePubSubBase.HasAction"/>
public bool HasAction { get; }

/// <inheritdoc cref="CallGatePubSubBase.HasFunction"/>
public bool HasFunction { get; }
}

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateSubscriber<TRet>
public interface ICallGateSubscriber<TRet> : ICallGateSubscriber
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
public void Subscribe(Action action);
Expand All @@ -21,7 +34,7 @@ public interface ICallGateSubscriber<TRet>
}

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateSubscriber<T1, TRet>
public interface ICallGateSubscriber<T1, TRet> : ICallGateSubscriber
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
public void Subscribe(Action<T1> action);
Expand All @@ -37,7 +50,7 @@ public interface ICallGateSubscriber<T1, TRet>
}

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateSubscriber<T1, T2, TRet>
public interface ICallGateSubscriber<T1, T2, TRet> : ICallGateSubscriber
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
public void Subscribe(Action<T1, T2> action);
Expand All @@ -53,7 +66,7 @@ public interface ICallGateSubscriber<T1, T2, TRet>
}

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateSubscriber<T1, T2, T3, TRet>
public interface ICallGateSubscriber<T1, T2, T3, TRet> : ICallGateSubscriber
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
public void Subscribe(Action<T1, T2, T3> action);
Expand All @@ -69,7 +82,7 @@ public interface ICallGateSubscriber<T1, T2, T3, TRet>
}

/// <inheritdoc cref="CallGatePubSubBase"/>
public interface ICallGateSubscriber<T1, T2, T3, T4, TRet>
public interface ICallGateSubscriber<T1, T2, T3, T4, TRet> : ICallGateSubscriber
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
public void Subscribe(Action<T1, T2, T3, T4> action);
Expand All @@ -84,7 +97,7 @@ public interface ICallGateSubscriber<T1, T2, T3, T4, TRet>
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
}

/// <inheritdoc cref="CallGatePubSubBase"/>
/// <inheritdoc cref="CallGatePubSubBase"/> : ICallGateSubscriber
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, TRet>
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
Expand All @@ -100,7 +113,7 @@ public interface ICallGateSubscriber<T1, T2, T3, T4, T5, TRet>
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
}

/// <inheritdoc cref="CallGatePubSubBase"/>
/// <inheritdoc cref="CallGatePubSubBase"/> : ICallGateSubscriber
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, TRet>
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
Expand All @@ -116,7 +129,7 @@ public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, TRet>
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
}

/// <inheritdoc cref="CallGatePubSubBase"/>
/// <inheritdoc cref="CallGatePubSubBase"/> : ICallGateSubscriber
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, TRet>
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
Expand All @@ -132,7 +145,7 @@ public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, TRet>
public TRet InvokeFunc(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
}

/// <inheritdoc cref="CallGatePubSubBase"/>
/// <inheritdoc cref="CallGatePubSubBase"/> : ICallGateSubscriber
public interface ICallGateSubscriber<T1, T2, T3, T4, T5, T6, T7, T8, TRet>
{
/// <inheritdoc cref="CallGatePubSubBase.Subscribe"/>
Expand Down
Loading
Loading