socket-0.6.0.0: src/System/Socket/Internal/Exception.hsc
{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving #-}
--------------------------------------------------------------------------------
-- |
-- 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
#include "hs_socket.h"
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 (#const SEOK)
eInterrupted :: SocketException
eInterrupted = SocketException (#const SEINTR)
eBadFileDescriptor :: SocketException
eBadFileDescriptor = SocketException (#const SEBADF)
eInvalid :: SocketException
eInvalid = SocketException (#const SEINVAL)
ePipe :: SocketException
ePipe = SocketException (#const SEPIPE)
eWouldBlock :: SocketException
eWouldBlock = SocketException (#const SEWOULDBLOCK)
eAgain :: SocketException
eAgain = SocketException (#const SEAGAIN)
eNotSocket :: SocketException
eNotSocket = SocketException (#const SENOTSOCK)
eDestinationAddressRequired :: SocketException
eDestinationAddressRequired = SocketException (#const SEDESTADDRREQ)
eMessageSize :: SocketException
eMessageSize = SocketException (#const SEMSGSIZE)
eProtocolType :: SocketException
eProtocolType = SocketException (#const SEPROTOTYPE)
eNoProtocolOption :: SocketException
eNoProtocolOption = SocketException (#const SENOPROTOOPT)
eProtocolNotSupported :: SocketException
eProtocolNotSupported = SocketException (#const SEPROTONOSUPPORT)
eSocketTypeNotSupported :: SocketException
eSocketTypeNotSupported = SocketException (#const SESOCKTNOSUPPORT)
eOperationNotSupported :: SocketException
eOperationNotSupported = SocketException (#const SEOPNOTSUPP)
eProtocolFamilyNotSupported :: SocketException
eProtocolFamilyNotSupported = SocketException (#const SEPFNOSUPPORT)
eAddressFamilyNotSupported :: SocketException
eAddressFamilyNotSupported = SocketException (#const SEAFNOSUPPORT)
eAddressInUse :: SocketException
eAddressInUse = SocketException (#const SEADDRINUSE)
eAddressNotAvailable :: SocketException
eAddressNotAvailable = SocketException (#const SEADDRNOTAVAIL)
eNetworkDown :: SocketException
eNetworkDown = SocketException (#const SENETDOWN)
eNetworkUnreachable :: SocketException
eNetworkUnreachable = SocketException (#const SENETUNREACH)
eNetworkReset :: SocketException
eNetworkReset = SocketException (#const SENETRESET)
eConnectionAborted :: SocketException
eConnectionAborted = SocketException (#const SECONNABORTED)
eConnectionReset :: SocketException
eConnectionReset = SocketException (#const SECONNRESET)
eNoBufferSpace :: SocketException
eNoBufferSpace = SocketException (#const SENOBUFS)
eIsConnected :: SocketException
eIsConnected = SocketException (#const SEISCONN)
eNotConnected :: SocketException
eNotConnected = SocketException (#const SENOTCONN)
eShutdown :: SocketException
eShutdown = SocketException (#const SESHUTDOWN)
eTooManyReferences :: SocketException
eTooManyReferences = SocketException (#const SETOOMANYREFS)
eTimedOut :: SocketException
eTimedOut = SocketException (#const SETIMEDOUT)
eConnectionRefused :: SocketException
eConnectionRefused = SocketException (#const SECONNREFUSED)
eHostDown :: SocketException
eHostDown = SocketException (#const SEHOSTDOWN)
eHostUnreachable :: SocketException
eHostUnreachable = SocketException (#const SEHOSTUNREACH)
eAlready :: SocketException
eAlready = SocketException (#const SEALREADY)
eInProgress :: SocketException
eInProgress = SocketException (#const SEINPROGRESS)