You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
760 B
C#
30 lines
760 B
C#
4 days ago
|
using System;
|
||
|
|
||
|
namespace Unity.BossRoom.Infrastructure
|
||
|
{
|
||
|
public class BufferedMessageChannel<T> : MessageChannel<T>, IBufferedMessageChannel<T>
|
||
|
{
|
||
|
public override void Publish(T message)
|
||
|
{
|
||
|
HasBufferedMessage = true;
|
||
|
BufferedMessage = message;
|
||
|
base.Publish(message);
|
||
|
}
|
||
|
|
||
|
public override IDisposable Subscribe(Action<T> handler)
|
||
|
{
|
||
|
var subscription = base.Subscribe(handler);
|
||
|
|
||
|
if (HasBufferedMessage)
|
||
|
{
|
||
|
handler?.Invoke(BufferedMessage);
|
||
|
}
|
||
|
|
||
|
return subscription;
|
||
|
}
|
||
|
|
||
|
public bool HasBufferedMessage { get; private set; } = false;
|
||
|
public T BufferedMessage { get; private set; }
|
||
|
}
|
||
|
}
|