37 lines
1.6 KiB
C#
37 lines
1.6 KiB
C#
using System;
|
|
|
|
namespace Plane.Messaging
|
|
{
|
|
public interface IPLMessenger
|
|
{
|
|
/// <summary>
|
|
/// Registers a recipient for a type of message TMessage. The action
|
|
/// parameter will be executed when a corresponding message is sent.
|
|
/// <para>Registering a recipient does not create a hard reference to it,
|
|
/// so if this recipient is deleted, no memory leak is caused.</para>
|
|
/// </summary>
|
|
/// <typeparam name="TMessage">The type of message that the recipient registers
|
|
/// for.</typeparam>
|
|
/// <param name="recipient">The recipient that will receive the messages.</param>
|
|
/// <param name="action">The action that will be executed when a message
|
|
/// of type TMessage is sent.</param>
|
|
void Register<TMessage>(object recipient, Action<TMessage> action);
|
|
|
|
/// <summary>
|
|
/// Sends a message to registered recipients. The message will
|
|
/// reach all recipients that registered for this message type
|
|
/// using one of the Register methods.
|
|
/// </summary>
|
|
/// <typeparam name="TMessage">The type of message that will be sent.</typeparam>
|
|
/// <param name="message">The message to send to registered recipients.</param>
|
|
void Send<TMessage>(TMessage message);
|
|
|
|
/// <summary>
|
|
/// Unregisters a messager recipient completely. After this method
|
|
/// is executed, the recipient will not receive any messages anymore.
|
|
/// </summary>
|
|
/// <param name="recipient">The recipient that must be unregistered.</param>
|
|
void Unregister(object recipient);
|
|
}
|
|
}
|