diff options
Diffstat (limited to 'TokensSample/Client.cs')
-rw-r--r-- | TokensSample/Client.cs | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/TokensSample/Client.cs b/TokensSample/Client.cs deleted file mode 100644 index 1061986..0000000 --- a/TokensSample/Client.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Net.Sockets; -using System.Threading; -using IrcTokens; - -namespace TokensSample -{ - public class Client - { - private readonly byte[] _bytes; - private readonly StatefulDecoder _decoder; - private readonly StatefulEncoder _encoder; - private readonly Socket _socket; - - public Client() - { - _decoder = new StatefulDecoder(); - _encoder = new StatefulEncoder(); - _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); - _bytes = new byte[1024]; - } - - public void Start() - { - _socket.Connect("127.0.0.1", 6667); - while (!_socket.Connected) Thread.Sleep(1000); - - Send(new Line {Command = "NICK", Params = new List<string> {"tokensbot"}}); - Send(new Line {Command = "USER", Params = new List<string> {"tokensbot", "0", "*", "real name"}}); - - while (true) - { - var bytesReceived = _socket.Receive(_bytes); - - if (bytesReceived == 0) - { - Console.WriteLine("! disconnected"); - _socket.Shutdown(SocketShutdown.Both); - _socket.Close(); - break; - } - - var lines = _decoder.Push(_bytes, bytesReceived); - - foreach (var line in lines) - { - Console.WriteLine($"< {line.Format()}"); - - switch (line.Command) - { - case "PING": - Send(new Line {Command = "PONG", Params = line.Params}); - break; - case "001": - Send(new Line {Command = "JOIN", Params = new List<string> {"#test"}}); - break; - case "PRIVMSG": - Send(new Line - { - Command = "PRIVMSG", Params = new List<string> {line.Params[0], "hello there"} - }); - break; - } - } - } - } - - private void Send(Line line) - { - Console.WriteLine($"> {line.Format()}"); - _encoder.Push(line); - while (_encoder.PendingBytes.Length > 0) - _encoder.Pop(_socket.Send(_encoder.PendingBytes, SocketFlags.None)); - } - } -} |