IRC parsing, tokenization, and state handling in C#
1using System.Collections.Generic;
2using System.Threading.Tasks;
3using IRCTokens;
4
5namespace IRCRobots
6{
7 public interface IServer
8 {
9 public IEnumerable<SentLine> SendRaw(string line, SendPriority sendPriority = SendPriority.Default);
10 public IEnumerable<SentLine> Send(Line line, SendPriority sendPriority = SendPriority.Default);
11 public void SetThrottle(int rate, float time);
12 public (string address, int port) ServerAddress();
13 public Task Connect(ITCPTransport transport, ConnectionParams connectionParams);
14 public Task Disconnect();
15 public void LinePreread(Line line);
16 public void LinePresend(Line line);
17 public Task LineRead(Line line);
18 public Task LineSend(Line line);
19 public Task STSPolicy(STSPolicy stsPolicy);
20 public Task ResumePolicy(ResumePolicy resumePolicy);
21 public bool CapAgreed(ICapability capability);
22 public string? CapAvailable(ICapability capability);
23 public Task<bool> SASLAuth(SASLParams saslParams);
24 }
25
26 public enum SendPriority
27 {
28 High = 0,
29 Medium = 10,
30 Low = 20,
31 Default = Medium
32 }
33}