You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
917 B
38 lines
917 B
using ConsoleApp1.intf;
|
|
|
|
namespace ConsoleApp1.pubsub.generics
|
|
{
|
|
internal class Publisher<T> : IPublisher<T>
|
|
where T : IMessage
|
|
{
|
|
public List<ISubscriber<T>> _subscribers = new List<ISubscriber<T>>();
|
|
|
|
public void Publish(T message)
|
|
{
|
|
if (string.IsNullOrEmpty(message?.Text))
|
|
{
|
|
return;
|
|
}
|
|
if (_subscribers.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
// ...
|
|
// ...
|
|
// ...
|
|
foreach (ISubscriber<T>? subscriber in _subscribers)
|
|
{
|
|
if (subscriber == null)
|
|
{
|
|
continue;
|
|
}
|
|
subscriber?.FireEvent(message);
|
|
}
|
|
}
|
|
|
|
public void Subscribe(ISubscriber<T> subscriber)
|
|
{
|
|
_subscribers.Add(subscriber);
|
|
}
|
|
}
|
|
}
|