{-# LINE 1 "src/System/Socket/Internal/Exception.hsc" #-}
{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving #-}
{-# LINE 2 "src/System/Socket/Internal/Exception.hsc" #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  System.Socket
-- Copyright   :  (c) Lars Petersen 2015
-- License     :  MIT
--
-- Maintainer  :  info@lars-petersen.net
-- Stability   :  experimental
--------------------------------------------------------------------------------
module System.Socket.Internal.Exception where

import Control.Exception
import Data.Typeable
import Foreign.C.Types


{-# LINE 18 "src/System/Socket/Internal/Exception.hsc" #-}

newtype SocketException
      = SocketException CInt
  deriving (Typeable, Eq, Ord)

instance Exception SocketException

instance Show SocketException where
  show e@(SocketException i)
    | e == eOk                         = "eOk"
    | e == eInterrupted                = "eInterrupted"
    | e == eBadFileDescriptor          = "eBadFileDescriptor"
    | e == eInvalid                    = "eInvalid"
    | e == ePipe                       = "ePipe"
    | e == eWouldBlock                 = "eWouldBlock"
    | e == eAgain                      = "eAgain"
    | e == eNotSocket                  = "eNotSocket"
    | e == eDestinationAddressRequired = "eDestinationAddressRequired"
    | e == eMessageSize                = "eMessageSize"
    | e == eProtocolType               = "eProtocolType"
    | e == eNoProtocolOption           = "eNoProtocolOption"
    | e == eProtocolNotSupported       = "eProtocolNotSupported"
    | e == eSocketTypeNotSupported     = "eSocketTypeNotSupported"
    | e == eOperationNotSupported      = "eOperationNotSupported"
    | e == eProtocolFamilyNotSupported = "eProtocolFamilyNotSupported"
    | e == eAddressFamilyNotSupported  = "eAddressFamilyNotSupported"
    | e == eAddressInUse               = "eAddressInUse"
    | e == eAddressNotAvailable        = "eAddressNotAvailable"
    | e == eNetworkDown                = "eNetworkDown"
    | e == eNetworkUnreachable         = "eNetworkUnreachable"
    | e == eNetworkReset               = "eNetworkReset"
    | e == eConnectionAborted          = "eConnectionAborted"
    | e == eConnectionReset            = "eConnectionReset"
    | e == eNoBufferSpace              = "eNoBufferSpace"
    | e == eIsConnected                = "eIsConnected"
    | e == eNotConnected               = "eNotConnected"
    | e == eShutdown                   = "eShutdown"
    | e == eTooManyReferences          = "eTooManyReferences"
    | e == eTimedOut                   = "eTimedOut"
    | e == eConnectionRefused          = "eConnectionRefused"
    | e == eHostDown                   = "eHostDown"
    | e == eHostUnreachable            = "eHostUnreachable"
    | e == eAlready                    = "eAlready"
    | e == eInProgress                 = "eInProgress"
    | otherwise                        = "SocketException " ++ show i

eOk                         :: SocketException
eOk                          = SocketException (0)
{-# LINE 66 "src/System/Socket/Internal/Exception.hsc" #-}

eInterrupted                :: SocketException
eInterrupted                 = SocketException (4)
{-# LINE 69 "src/System/Socket/Internal/Exception.hsc" #-}

eBadFileDescriptor          :: SocketException
eBadFileDescriptor           = SocketException (9)
{-# LINE 72 "src/System/Socket/Internal/Exception.hsc" #-}

eInvalid                    :: SocketException
eInvalid                     = SocketException (22)
{-# LINE 75 "src/System/Socket/Internal/Exception.hsc" #-}

ePipe                       :: SocketException
ePipe                        = SocketException (32)
{-# LINE 78 "src/System/Socket/Internal/Exception.hsc" #-}

eWouldBlock                 :: SocketException
eWouldBlock                  = SocketException (11)
{-# LINE 81 "src/System/Socket/Internal/Exception.hsc" #-}

eAgain                      :: SocketException
eAgain                       = SocketException (11)
{-# LINE 84 "src/System/Socket/Internal/Exception.hsc" #-}

eNotSocket                  :: SocketException
eNotSocket                   = SocketException (88)
{-# LINE 87 "src/System/Socket/Internal/Exception.hsc" #-}

eDestinationAddressRequired :: SocketException
eDestinationAddressRequired  = SocketException (89)
{-# LINE 90 "src/System/Socket/Internal/Exception.hsc" #-}

eMessageSize                :: SocketException
eMessageSize                 = SocketException (90)
{-# LINE 93 "src/System/Socket/Internal/Exception.hsc" #-}

eProtocolType               :: SocketException
eProtocolType                = SocketException (91)
{-# LINE 96 "src/System/Socket/Internal/Exception.hsc" #-}

eNoProtocolOption           :: SocketException
eNoProtocolOption            = SocketException (92)
{-# LINE 99 "src/System/Socket/Internal/Exception.hsc" #-}

eProtocolNotSupported       :: SocketException
eProtocolNotSupported        = SocketException (93)
{-# LINE 102 "src/System/Socket/Internal/Exception.hsc" #-}

eSocketTypeNotSupported     :: SocketException
eSocketTypeNotSupported      = SocketException (94)
{-# LINE 105 "src/System/Socket/Internal/Exception.hsc" #-}

eOperationNotSupported      :: SocketException
eOperationNotSupported       = SocketException (95)
{-# LINE 108 "src/System/Socket/Internal/Exception.hsc" #-}

eProtocolFamilyNotSupported :: SocketException
eProtocolFamilyNotSupported  = SocketException (96)
{-# LINE 111 "src/System/Socket/Internal/Exception.hsc" #-}

eAddressFamilyNotSupported  :: SocketException
eAddressFamilyNotSupported   = SocketException (97)
{-# LINE 114 "src/System/Socket/Internal/Exception.hsc" #-}

eAddressInUse               :: SocketException
eAddressInUse                = SocketException (98)
{-# LINE 117 "src/System/Socket/Internal/Exception.hsc" #-}

eAddressNotAvailable        :: SocketException
eAddressNotAvailable         = SocketException (99)
{-# LINE 120 "src/System/Socket/Internal/Exception.hsc" #-}

eNetworkDown                :: SocketException
eNetworkDown                 = SocketException (100)
{-# LINE 123 "src/System/Socket/Internal/Exception.hsc" #-}

eNetworkUnreachable         :: SocketException
eNetworkUnreachable          = SocketException (101)
{-# LINE 126 "src/System/Socket/Internal/Exception.hsc" #-}

eNetworkReset               :: SocketException
eNetworkReset                = SocketException (102)
{-# LINE 129 "src/System/Socket/Internal/Exception.hsc" #-}

eConnectionAborted          :: SocketException
eConnectionAborted           = SocketException (103)
{-# LINE 132 "src/System/Socket/Internal/Exception.hsc" #-}

eConnectionReset            :: SocketException
eConnectionReset             = SocketException (104)
{-# LINE 135 "src/System/Socket/Internal/Exception.hsc" #-}

eNoBufferSpace              :: SocketException
eNoBufferSpace               = SocketException (105)
{-# LINE 138 "src/System/Socket/Internal/Exception.hsc" #-}

eIsConnected                :: SocketException
eIsConnected                 = SocketException (106)
{-# LINE 141 "src/System/Socket/Internal/Exception.hsc" #-}

eNotConnected               :: SocketException
eNotConnected                = SocketException (107)
{-# LINE 144 "src/System/Socket/Internal/Exception.hsc" #-}

eShutdown                   :: SocketException
eShutdown                    = SocketException (108)
{-# LINE 147 "src/System/Socket/Internal/Exception.hsc" #-}

eTooManyReferences          :: SocketException
eTooManyReferences           = SocketException (109)
{-# LINE 150 "src/System/Socket/Internal/Exception.hsc" #-}

eTimedOut                   :: SocketException
eTimedOut                    = SocketException (110)
{-# LINE 153 "src/System/Socket/Internal/Exception.hsc" #-}

eConnectionRefused          :: SocketException
eConnectionRefused           = SocketException (111)
{-# LINE 156 "src/System/Socket/Internal/Exception.hsc" #-}

eHostDown                   :: SocketException
eHostDown                    = SocketException (112)
{-# LINE 159 "src/System/Socket/Internal/Exception.hsc" #-}

eHostUnreachable            :: SocketException
eHostUnreachable             = SocketException (113)
{-# LINE 162 "src/System/Socket/Internal/Exception.hsc" #-}

eAlready                    :: SocketException
eAlready                     = SocketException (114)
{-# LINE 165 "src/System/Socket/Internal/Exception.hsc" #-}

eInProgress                 :: SocketException
eInProgress                  = SocketException (115)
{-# LINE 168 "src/System/Socket/Internal/Exception.hsc" #-}