MessageQueueException.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Messaging / System / Messaging / MessageQueueException.cs / 1305376 / MessageQueueException.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Messaging { 
    using System.Runtime.InteropServices; 
    using System.Runtime.Serialization;
    using System.Diagnostics; 
    using System;
    using System.Text;
    using System.Messaging.Interop;
    using System.ComponentModel; 
    using Microsoft.Win32;
    using System.Globalization; 
 
    /// 
    ///  
    ///    
    ///       Is thrown if a Microsoft Message
    ///       Queue Server (MSMQ) internal error occurs.
    ///     
    /// 
    [Serializable] 
 	[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors")] 
    public class MessageQueueException : ExternalException, ISerializable {
 
        private readonly int nativeErrorCode;

        /// 
        /// 
        internal MessageQueueException(int error) {
            nativeErrorCode = error; 
        } 

        ///  
        /// 
        protected MessageQueueException(SerializationInfo info, StreamingContext context) : base (info, context) {
            nativeErrorCode = info.GetInt32("NativeErrorCode");
        } 

        ///  
        ///  
        ///    [To be supplied.]
        ///  
        public MessageQueueErrorCode MessageQueueErrorCode {
            get {
                return (MessageQueueErrorCode)nativeErrorCode;
            } 
        }
 
        ///  
        /// 
        ///    [To be supplied.] 
        /// 
        public override string Message {
            get {
                try { 
                    return Res.GetString(Convert.ToString(nativeErrorCode, 16).ToUpper(CultureInfo.InvariantCulture));
                } 
                catch  { 
                    return GetUnknownErrorMessage(nativeErrorCode);
                } 
            }
        }

        private static string GetUnknownErrorMessage(int error) { 
            //get the system error message...
            string errorMsg = ""; 
 
            StringBuilder sb = new StringBuilder(256);
            int result = SafeNativeMethods.FormatMessage(SafeNativeMethods.FORMAT_MESSAGE_IGNORE_INSERTS | 
                                       SafeNativeMethods.FORMAT_MESSAGE_FROM_SYSTEM |
                                       SafeNativeMethods.FORMAT_MESSAGE_ARGUMENT_ARRAY,
                                       IntPtr.Zero, error, 0, sb, sb.Capacity + 1, IntPtr.Zero);
            if (result != 0) { 
                int i = sb.Length;
                while (i > 0) { 
                    char ch = sb[i - 1]; 
                    if (ch > 32 && ch != '.') break;
                    i--; 
                }
                errorMsg = sb.ToString(0, i);
            }
            else { 
                errorMsg =Res.GetString("UnknownError", Convert.ToString(error, 16));
            } 
 
            return errorMsg;
        } 

        /// 
        [System.Security.Permissions.SecurityPermissionAttribute(System.Security.Permissions.SecurityAction.LinkDemand, Flags=System.Security.Permissions.SecurityPermissionFlag.SerializationFormatter)]
		public override void GetObjectData(SerializationInfo info, StreamingContext context) { 
            if (info==null) {
                throw new ArgumentNullException("info"); 
            } 
            info.AddValue("NativeErrorCode", nativeErrorCode);
            base.GetObjectData(info, context); 
        }

    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK