public HandshakeExtension GetExtension(string name) { if (name == null) { throw new ArgumentNullException("name"); } return(RequiredExtensions.FirstOrDefault(x => x.Name == name) ?? OptionalExtensions.FirstOrDefault(x => x.Name == name)); }
public int CopyTo(byte[] destination, int offset) { var firstOffset = offset; destination[offset++] = VersionMajor; destination[offset++] = VersionMinor; destination[offset++] = Flags; //identity destination[offset++] = (byte)Identity.Length; _receiveStateBytesLeft = Encoding.ASCII.GetBytes(Identity, 0, Identity.Length, destination, offset); offset += _receiveStateBytesLeft; //required extensions if (RequiredExtensions == null || RequiredExtensions.Length == 0) { //leave them as zeroes. offset += 2; } else { var str = string.Join(";", RequiredExtensions.Select(x => x.Serialize())); var buf = BitConverter.GetBytes((ushort)str.Length); if (BitConverter.IsLittleEndian) { Array.Reverse(buf); } Buffer.BlockCopy(buf, 0, destination, offset, 2); _receiveStateBytesLeft = Encoding.ASCII.GetBytes(str, 0, str.Length, destination, offset + 2); offset += 2 + _receiveStateBytesLeft; } //optional extensions if (OptionalExtensions == null || OptionalExtensions.Length == 0) { //leave them as zeroes. offset += 2; } else { var str = string.Join(";", OptionalExtensions.Select(x => x.Serialize())); var buf = BitConverter.GetBytes((ushort)str.Length); if (BitConverter.IsLittleEndian) { Array.Reverse(buf); } Buffer.BlockCopy(buf, 0, destination, offset, 2); _receiveStateBytesLeft = Encoding.ASCII.GetBytes(str, 0, str.Length, destination, offset + 2); offset += 2 + _receiveStateBytesLeft; } return(offset - firstOffset); }
public bool HasExtension(string extension) { bool result = false; for (uint i = 0; i < RequiredExtensions.NumberOfItems; i++) { if (string.Equals(RequiredExtensions.GetItem(i), extension)) { result = true; break; } } return(result); }