{-# 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 == eINTR           = "eINTR"
    | e == eAGAIN          = "eAGAIN"
    | e == eWOULDBLOCK     = "eWOULDBLOCK"
    | e == eBADF           = "eBADF"
    | e == eINPROGRESS     = "eINPROGRESS"
    | e == ePROTONOSUPPORT = "ePROTONOSUPPORT"
    | e == eINVAL          = "eINVAL"
    | e == eCONNREFUSED    = "eCONNREFUSED"
    | e == eNETUNREACH     = "eNETUNREACH"
    | e == eNOTCONN        = "eNOTCONN"
    | e == eALREADY        = "eALREADY"
    | e == eISCONN         = "eISCONN"
    | e == eTIMEDOUT       = "eTIMEDOUT"
    | otherwise            = "SocketException " ++ show i

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

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

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

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

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

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

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

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

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

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

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

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

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

eTIMEDOUT       :: SocketException
eTIMEDOUT        = SocketException (110)