41 lines
983 B
C#
41 lines
983 B
C#
using Serilog;
|
|
using TwitchChatTTS.Chat.Speech;
|
|
|
|
namespace TwitchChatTTS.Chat.Observers
|
|
{
|
|
public class TTSConsumer : IObserver<TTSGroupedMessage>
|
|
{
|
|
private readonly TTSEngine _engine;
|
|
private readonly ILogger _logger;
|
|
|
|
private IDisposable? _cancellation;
|
|
|
|
public TTSConsumer(TTSEngine engine, ILogger logger)
|
|
{
|
|
_engine = engine;
|
|
_logger = logger;
|
|
}
|
|
|
|
public virtual void Subscribe(TTSPublisher provider) =>
|
|
_cancellation = provider.Subscribe(this);
|
|
|
|
public virtual void Unsubscribe()
|
|
{
|
|
_cancellation?.Dispose();
|
|
}
|
|
|
|
public void OnCompleted()
|
|
{
|
|
}
|
|
|
|
public void OnError(Exception error)
|
|
{
|
|
_logger.Error(error, "An error happened while observing for TTS messages.");
|
|
}
|
|
|
|
public void OnNext(TTSGroupedMessage value)
|
|
{
|
|
_engine.PlayerSource?.Cancel();
|
|
}
|
|
}
|
|
} |