module System.Socket.Internal.Exception where
import Control.Exception
import Data.Typeable
import Foreign.C.Types
newtype SocketException
= SocketException CInt
deriving (Typeable, Eq)
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"
| otherwise = "SocketException " ++ show i
eOK :: SocketException
eOK = SocketException (0)
eINTR :: SocketException
eINTR = SocketException (4)
eAGAIN :: SocketException
eAGAIN = SocketException (11)
eWOULDBLOCK :: SocketException
eWOULDBLOCK = SocketException (11)
eBADF :: SocketException
eBADF = SocketException (9)
eINPROGRESS :: SocketException
eINPROGRESS = SocketException (115)
ePROTONOSUPPORT :: SocketException
ePROTONOSUPPORT = SocketException (93)
eINVAL :: SocketException
eINVAL = SocketException (22)
eCONNREFUSED :: SocketException
eCONNREFUSED = SocketException (111)