コード例 #1
0
ファイル: Utils.cs プロジェクト: greenfoxer/otus_hw
        /// <summary>
        /// Так как NetworkStream не закрывается, то нет возможности просто скопировать входящие данные из него в MemoryStream.
        /// Поэтому считываем данные сначала в массив байт.
        /// Для тестирования обработки ошибок ввведем условие на проброс ошибки, если сообщение начинается с '/'
        /// <returns></returns>
        public static Message DeSerialize(byte[] stream)
        {
            Message obj;

            try
            {
                MemoryStream receivedStream = new MemoryStream(stream);
                receivedStream.Position = 0;
                obj = (Message)formatter.Deserialize(receivedStream);
                if (obj.body.StartsWith("/"))
                {
                    throw new Exception("Serialization exception!");
                }
            }
            catch (Exception ex)
            {
                obj = new Message(ex.Message);
                obj.SetMessageInfo(MessageType.ErrorMessage);
            }
            return(obj);
        }