module Network.QUIC.Types.Exception where
import qualified Network.TLS as TLS
import qualified UnliftIO.Exception as E
import Network.QUIC.Imports
import Network.QUIC.Types.Error
import Network.QUIC.Types.Frame
import Network.QUIC.Types.Packet
data QUICException =
ConnectionIsClosed
| TransportErrorIsReceived TransportError ReasonPhrase
| TransportErrorIsSent TransportError ReasonPhrase
| ApplicationProtocolErrorIsReceived ApplicationProtocolError ReasonPhrase
| ApplicationProtocolErrorIsSent ApplicationProtocolError ReasonPhrase
| ConnectionIsTimeout
| ConnectionIsReset
| StreamIsClosed
| HandshakeFailed TLS.AlertDescription
| VersionIsUnknown Word32
| NoVersionIsSpecified
| VersionNegotiationFailed
| BadThingHappen E.SomeException
deriving (Int -> QUICException -> ShowS
[QUICException] -> ShowS
QUICException -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [QUICException] -> ShowS
$cshowList :: [QUICException] -> ShowS
show :: QUICException -> String
$cshow :: QUICException -> String
showsPrec :: Int -> QUICException -> ShowS
$cshowsPrec :: Int -> QUICException -> ShowS
Show)
instance E.Exception QUICException
data InternalControl = MustNotReached
| ExitConnection
| WrongTransportParameter
| WrongVersionInformation
| BreakForever
deriving (InternalControl -> InternalControl -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InternalControl -> InternalControl -> Bool
$c/= :: InternalControl -> InternalControl -> Bool
== :: InternalControl -> InternalControl -> Bool
$c== :: InternalControl -> InternalControl -> Bool
Eq, Int -> InternalControl -> ShowS
[InternalControl] -> ShowS
InternalControl -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InternalControl] -> ShowS
$cshowList :: [InternalControl] -> ShowS
show :: InternalControl -> String
$cshow :: InternalControl -> String
showsPrec :: Int -> InternalControl -> ShowS
$cshowsPrec :: Int -> InternalControl -> ShowS
Show)
instance E.Exception InternalControl
newtype NextVersion = NextVersion VersionInfo deriving (Int -> NextVersion -> ShowS
[NextVersion] -> ShowS
NextVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NextVersion] -> ShowS
$cshowList :: [NextVersion] -> ShowS
show :: NextVersion -> String
$cshow :: NextVersion -> String
showsPrec :: Int -> NextVersion -> ShowS
$cshowsPrec :: Int -> NextVersion -> ShowS
Show)
instance E.Exception NextVersion
data Abort = Abort ApplicationProtocolError ReasonPhrase
| VerNego VersionInfo
deriving (Int -> Abort -> ShowS
[Abort] -> ShowS
Abort -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Abort] -> ShowS
$cshowList :: [Abort] -> ShowS
show :: Abort -> String
$cshow :: Abort -> String
showsPrec :: Int -> Abort -> ShowS
$cshowsPrec :: Int -> Abort -> ShowS
Show)
instance E.Exception Abort where
fromException :: SomeException -> Maybe Abort
fromException = forall e. Exception e => SomeException -> Maybe e
E.asyncExceptionFromException
toException :: Abort -> SomeException
toException = forall e. Exception e => e -> SomeException
E.asyncExceptionToException