IRC parsing, tokenization, and state handling in C#
at ircrobotsv2 46 lines 1.1 kB view raw
1namespace IRCRobots; 2 3public class Bot : IBot 4{ 5 private readonly Dictionary<string, Server> _servers = []; 6 private readonly Queue<Server> _serverQueue = []; 7 8 public Server CreateServer(string name) 9 { 10 throw new NotImplementedException(); 11 } 12 13 public Task Disconnected(Server server) 14 { 15 throw new NotImplementedException(); 16 } 17 18 public async Task DisconnectAsync(Server server) 19 { 20 _servers.Remove(server.Name); 21 await server.DisconnectAsync(); 22 } 23 24 public async Task<Server> AddServerAsync(string name, ConnectionParams connectionParams) 25 { 26 var server = CreateServer(name); 27 _servers[name] = server; 28 await server.ConnectAsync(); 29 _serverQueue.Enqueue(server); 30 return server; 31 } 32 33 public Task RunAsync() 34 { 35 return Task.CompletedTask; 36 } 37} 38 39public interface IBot 40{ 41 Server CreateServer(string name); 42 Task Disconnected(Server server); 43 Task DisconnectAsync(Server server); 44 Task<Server> AddServerAsync(string name, ConnectionParams connectionParams); 45 Task RunAsync(); 46}