public static Handshake GetHandshakeResponse(this Handshake handshakeRequest, ICollection <string> subProtocols, byte maxSize) { Handshake handshakeResponse; if (handshakeRequest.ReservedOctets != 0) { handshakeResponse = new Handshake(HandshakeErrorCode.UseOfReservedBits); } else { SerializerType serializerType = handshakeRequest.SerializerType; string requestedSubprotocol = serializerType.GetSubProtocol(); if (!subProtocols.Contains(requestedSubprotocol)) { handshakeResponse = new Handshake(HandshakeErrorCode.SerializerUnsupported); } else { handshakeResponse = new Handshake(maxSize, serializerType); } } return(handshakeResponse); }
protected override string GetSubProtocol(RawSocketTcpClient connection) { SerializerType serializerType = connection.HandshakeRequest.SerializerType; return(serializerType.GetSubProtocol()); }