using System.Collections.Generic; using System.Linq; using System.Text; namespace IrcTokens { public class StatefulEncoder { private string _buffer; public EncodingInfo Encoding { get; set; } private List _bufferedLines; public string Pending => _buffer; public void Clear() { _buffer = ""; _bufferedLines.Clear(); } public void Push(Line line) { _buffer += $"{line.Format()}\r\n"; _bufferedLines.Add(line); } public List Pop(int byteCount) { var sent = _buffer.Substring(byteCount).Count(c => c == '\n'); _buffer = _buffer.Substring(byteCount); _bufferedLines = _bufferedLines.Skip(sent).ToList(); return _bufferedLines.Take(sent).ToList(); } } }