module System.Socket.Internal.Exception where
import Control.Exception
import Data.Typeable
import Foreign.C.Types
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)
eInterrupted :: SocketException
eInterrupted = SocketException (4)
eAgain :: SocketException
eAgain = SocketException (11)
eWouldBlock :: SocketException
eWouldBlock = SocketException (11)
eBadFileDescriptor :: SocketException
eBadFileDescriptor = SocketException (9)
eInProgress :: SocketException
eInProgress = SocketException (115)
eProtocolNotSupported :: SocketException
eProtocolNotSupported = SocketException (93)
eInvalid :: SocketException
eInvalid = SocketException (22)
eConnectionRefused :: SocketException
eConnectionRefused = SocketException (111)
eNetworkUnreachable :: SocketException
eNetworkUnreachable = SocketException (101)
eNotConnected :: SocketException
eNotConnected = SocketException (107)
eAlready :: SocketException
eAlready = SocketException (114)
eIsConnected :: SocketException
eIsConnected = SocketException (106)
eTimedOut :: SocketException
eTimedOut = SocketException (110)
ePipe :: SocketException
ePipe = SocketException (32)