Exemple #1
0
        /// <summary>
        /// Analyzes the version of the requested protocol and reads type of the connection.
        /// Throws OperationException on any errors.
        /// </summary>
        /// <param name="binaryReader">BinaryReader created on the stream with data.</param>
        /// <param name="protocolVersion">The version of the protocol.</param>
        /// <param name="genuineConnectionType">Read type of the connection.</param>
        /// <param name="connectionId">The connection identifier.</param>
        public static void DeserializeConnectionHeader(BinaryReader binaryReader, out byte protocolVersion, out GenuineConnectionType genuineConnectionType, out string connectionId)
        {
            connectionId = "/__GC/Default";

            protocolVersion = binaryReader.ReadByte();

            genuineConnectionType = (GenuineConnectionType)binaryReader.ReadByte();
            if (!Enum.IsDefined(typeof(GenuineConnectionType), genuineConnectionType) || genuineConnectionType == GenuineConnectionType.None || genuineConnectionType == GenuineConnectionType.All)
            {
                throw GenuineExceptions.Get_Connect_CanNotAcceptIncomingConnection("Incorrect type of the connection.");
            }

            if (protocolVersion > 0)
            {
                connectionId = binaryReader.ReadString();
                if (connectionId == null || connectionId.Length <= 0)
                {
                    throw GenuineExceptions.Get_Connect_CanNotAcceptIncomingConnection("Incorrect name of the connection.");
                }
            }
        }