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
  }
}