diff --git a/BlazorWebassemblyI18n/IMessage.cs b/BlazorWebassemblyI18n/IMessage.cs new file mode 100644 index 0000000..ac0d8b0 --- /dev/null +++ b/BlazorWebassemblyI18n/IMessage.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace BlazorWebassemblyI18n +{ + public interface IMessage + { + public Task ReceiveMessage(string message); + } +} \ No newline at end of file diff --git a/BlazorWebassemblyI18n/SessionManager.cs b/BlazorWebassemblyI18n/SessionManager.cs new file mode 100644 index 0000000..fa9aac3 --- /dev/null +++ b/BlazorWebassemblyI18n/SessionManager.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace BlazorWebassemblyI18n +{ + public sealed class SessionManager : IMessage + { + private readonly List receivers = new(); + + internal SessionManager() + { + this.Register(this); + } + + public void Register(IMessage receiver) => this.receivers.Add(receiver); + + public async Task SendMessage(string content) + { + foreach (var receiver in this.receivers) + await receiver.ReceiveMessage(content); + } + + public Task ReceiveMessage(string message) + { + Console.WriteLine($"sending message: '{message}'"); + return Task.CompletedTask; + } + } +} \ No newline at end of file