public byte[] Encode()
{
MemoryStream memStream = new MemoryStream();
HandshakeStream stream = new HandshakeStream(memStream);
byte[] dataBytes;
try {
dataBytes = EncodeDataBytes(_version);
} catch (AlertException ae) {
throw ae;
} catch (Exception e) {
throw new AlertException(AlertDescription.InternalError, e.Message);
}
stream.WriteUInt8((byte) Type);
stream.WriteUInt24((UInt32) dataBytes.Length);
stream.WriteBytes(dataBytes);
return memStream.ToArray();
}