using System; namespace Shadowsocks.Protocol.Socks5 { public class Socks5UserPasswordResponseMessage : Socks5Message { // 1 success public bool Success; public override int Serialize(Memory buffer) { if (buffer.Length < 2) throw Util.BufferTooSmall(2, buffer.Length, nameof(buffer)); buffer.Span[0] = 1; buffer.Span[1] = (byte) (Success ? 0 : 1); return 2; } public override (bool success, int length) TryLoad(ReadOnlyMemory buffer) { if (buffer.Length < 2) return (false, 2); if (buffer.Span[0] != 1) return (false, 0); Success = buffer.Span[1] == 0; return (true, 2); } public override bool Equals(IProtocolMessage other) { if (other is null) return false; if (ReferenceEquals(this, other)) return true; if (other.GetType() != GetType()) return false; return Success == ((Socks5UserPasswordResponseMessage)other).Success; } } }