{-# LINE 1 "src/System/Socket/Internal/Exception.hsc" #-}
{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving #-}
{-# LINE 2 "src/System/Socket/Internal/Exception.hsc" #-}
module System.Socket.Internal.Exception where

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


{-# LINE 9 "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 == eAgain                = "eAgain"
    | e == eWouldBlock           = "eWouldBlock"
    | e == eBadFileDescriptor    = "eBadFileDescriptor"
    | e == eInProgress           = "eInProgress"
    | e == eProtocolNotSupported = "eProtocolNotSupported"
    | e == eInvalid              = "eInvalid"
    | e == eConnectionRefused    = "eConnectionRefused"
    | e == eNetworkUnreachable   = "eNetworkUnreachable"
    | e == eNotConnected         = "eNotConnected"
    | e == eAlready              = "eAlready"
    | e == eIsConnected          = "eIsConnected"
    | e == eTimedOut             = "eTimedOut"
    | e == ePipe                 = "ePipe"
    | otherwise                  = "SocketException " ++ show i

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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