BotSharp/src/Infrastructure/BotSharp.Core/Observables/Queues/MessageHub.cs

45 lines
1.1 KiB
C#
Raw Normal View History

2025-06-17 18:17:28 +00:00
using BotSharp.Abstraction.Observables.Models;
using System.Reactive.Subjects;
namespace BotSharp.Core.Observables.Queues;
public class MessageHub
{
private readonly ILogger<MessageHub> _logger;
private readonly ISubject<HubObserveData> _observable = new Subject<HubObserveData>();
public IObservable<HubObserveData> Events => _observable;
public MessageHub(ILogger<MessageHub> logger)
{
_logger = logger;
}
/// <summary>
/// Push an item to the observers.
/// </summary>
/// <param name="item"></param>
public void Push(HubObserveData item)
{
_observable.OnNext(item);
}
/// <summary>
/// Send a complete notification to the observers.
/// This will stop the observers from receiving data.
/// </summary>
public void Complete()
{
_observable.OnCompleted();
}
/// <summary>
/// Send an error notification to the observers.
/// This will stop the observers from receiving data.
/// </summary>
/// <param name="error"></param>
public void Error(Exception error)
{
_observable.OnError(error);
}
}