Ejemplo n.º 1
0
 protected TSMException( SerializationInfo info, StreamingContext context ) : base( info, context ) 
 { 
     if(info != null)
     {
     //    this.ExitCode = info.GetInt32("ExitCode");
     //    this.TSMMessages = (List<clsTSMMessage>)info.GetValue("TSMMessages", typeof(List<clsTSMMessage>));
         //var msg = info.GetValue("TSMMessage", typeof(clsTSMMessage)) as clsTSMMessage;
         //if (msg != null)
         //    this.TSMMessage = msg;
         this.TSMMessage = info.GetValue("TSMMessage", typeof(clsTSMMessage)) as clsTSMMessage;
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Try parse a string into an message string.
        /// </summary>
        /// <param name="MessageString"></param>
        /// <param name="tsmmsg"></param>
        /// <returns></returns>
        public static bool TryParse(string MessageString, out clsTSMMessage tsmmsg)
        {
            tsmmsg = null;

            if (string.IsNullOrWhiteSpace(MessageString))
                return false;
            if (MessageString.Length < 9)
                return false;

            if (!Char.IsLetter(MessageString[0]))
                return false;
            if (!Char.IsLetter(MessageString[1]))
                return false;
            if (!Char.IsLetter(MessageString[2]))
                return false;

            var prefix = MessageString.Substring(0, 3).ToUpperInvariant();

            int number = 0;
            if (!int.TryParse(MessageString.Substring(3, 4), out number))
                return false;

            var severity = MessageString[7];

            if (!Char.IsLetter(severity))
                return false;

            string text = string.Empty;

            if (MessageString.Length > 9)
                text = MessageString.Substring(9);

            tsmmsg = new clsTSMMessage()
            {
                Prefix = prefix,
                Number = number,
                Type = severity,
                Text = text,
            };

            return true;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Tries to decode the error message inside message list.
        /// Actually only tries 2 last items...
        /// </summary>
        /// <param name="messages"></param>
        /// <returns></returns>
        protected virtual bool DecodeMessage(List<string> messages)
        {
            if (messages == null)
                return false;

            var count = messages.Count;

            if(count == 0)
                return false;
            if(count == 1)
            {
                clsTSMMessage msg;
                if(clsTSMMessage.TryParse(messages[0], out msg))
                {
                    this.TSMMessage = msg;
                    return true;
                }
                //return false;
            }
            else
            {
                // get last 2 elements in list.
                // Yay, a linq call!
                //var last = messages.Skip(Math.Max(0, count - 2)).Take(2);
                var last = messages.Skip(count - 2);
                //var last = messages.Reverse<string>().Take(2); this reverts the whole array. This can be very big so dont.
                
                if(last != null)
                {
                    Debug.Assert(last.Count() == 2, string.Format("Code to get last 2 items in list failed. Result: {0}", last.Count()));

                    // try second last first. 
                    clsTSMMessage msg = null;
                    if (clsTSMMessage.TryParse(last.First(), out msg))
                        this.TSMMessage = msg;
                    else if (clsTSMMessage.TryParse(last.Last(), out msg))
                        this.TSMMessage = msg;

                    if (TSMMessage != null)
                        return true;
                }
            }

            return false;
        }