using System;
namespace SocketHttpListener
{
    /// 
    /// The exception that is thrown when a  gets a fatal error.
    /// 
    public class WebSocketException : Exception
    {
        #region Internal Constructors
        internal WebSocketException()
          : this(CloseStatusCode.Abnormal, null, null)
        {
        }
        internal WebSocketException(string message)
          : this(CloseStatusCode.Abnormal, message, null)
        {
        }
        internal WebSocketException(CloseStatusCode code)
          : this(code, null, null)
        {
        }
        internal WebSocketException(string message, Exception innerException)
          : this(CloseStatusCode.Abnormal, message, innerException)
        {
        }
        internal WebSocketException(CloseStatusCode code, string message)
          : this(code, message, null)
        {
        }
        internal WebSocketException(CloseStatusCode code, string message, Exception innerException)
          : base(message ?? code.GetMessage(), innerException)
        {
            Code = code;
        }
        #endregion
        #region Public Properties
        /// 
        /// Gets the status code indicating the cause for the exception.
        /// 
        /// 
        /// One of the  enum values, represents the status code indicating
        /// the cause for the exception.
        /// 
        public CloseStatusCode Code
        {
            get; private set;
        }
        #endregion
    }
}