| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Network.ErrorPolicy
Contents
Description
Error policies, and integration with SuspendDecision-semigroup action on
PeerState.
Synopsis
- data ErrorPolicies = ErrorPolicies {}
- nullErrorPolicies :: ErrorPolicies
- data ErrorPolicy where
- ErrorPolicy :: forall e. Exception e => (e -> Maybe (SuspendDecision DiffTime)) -> ErrorPolicy
- evalErrorPolicy :: forall e. Exception e => e -> ErrorPolicy -> Maybe (SuspendDecision DiffTime)
- evalErrorPolicies :: forall e. Exception e => e -> [ErrorPolicy] -> Maybe (SuspendDecision DiffTime)
- type CompleteApplication m s addr r = Result addr r -> s -> STM m (CompleteApplicationResult m addr s)
- data CompleteApplicationResult m addr s = CompleteApplicationResult {
- carState :: !s
- carThreads :: Set (Async m ())
- carTrace :: Maybe (WithAddr addr ErrorPolicyTrace)
- data Result addr r where
- ApplicationResult :: !Time -> !addr -> !r -> Result addr r
- Connected :: !Time -> !addr -> Result addr r
- ConnectionError :: Exception e => !Time -> !addr -> !e -> Result addr r
- ApplicationError :: Exception e => !Time -> !addr -> !e -> Result addr r
- completeApplicationTx :: forall m addr a. (MonadAsync m, Ord addr, Ord (Async m ())) => ErrorPolicies -> CompleteApplication m (PeerStates m addr) addr a
- data ErrorPolicyTrace
- = ErrorPolicySuspendPeer (Maybe (ConnectionOrApplicationExceptionTrace SomeException)) !DiffTime !DiffTime
- | ErrorPolicySuspendConsumer (Maybe (ConnectionOrApplicationExceptionTrace SomeException)) !DiffTime
- | ErrorPolicyLocalNodeError (ConnectionOrApplicationExceptionTrace SomeException)
- | ErrorPolicyResumePeer
- | ErrorPolicyKeepSuspended
- | ErrorPolicyResumeConsumer
- | ErrorPolicyResumeProducer
- | ErrorPolicyUnhandledApplicationException SomeException
- | ErrorPolicyUnhandledConnectionException SomeException
- | ErrorPolicyAcceptException IOException
- traceErrorPolicy :: Either (ConnectionOrApplicationExceptionTrace SomeException) r -> SuspendDecision DiffTime -> Maybe ErrorPolicyTrace
- data WithAddr addr a = WithAddr {}
- data PeerStates m addr
- data SuspendDecision t
- = SuspendPeer !t !t
- | SuspendConsumer !t
- | Throw
Documentation
data ErrorPolicies Source #
List of error policies for exception handling and a policy for handing application return values.
Constructors
| ErrorPolicies | |
Fields
| |
Instances
| Semigroup ErrorPolicies Source # | |
Defined in Ouroboros.Network.ErrorPolicy Methods (<>) :: ErrorPolicies -> ErrorPolicies -> ErrorPolicies # sconcat :: NonEmpty ErrorPolicies -> ErrorPolicies # stimes :: Integral b => b -> ErrorPolicies -> ErrorPolicies # | |
data ErrorPolicy where Source #
Constructors
| ErrorPolicy | |
Fields
| |
Instances
| Show ErrorPolicy Source # | |
Defined in Ouroboros.Network.ErrorPolicy Methods showsPrec :: Int -> ErrorPolicy -> ShowS # show :: ErrorPolicy -> String # showList :: [ErrorPolicy] -> ShowS # | |
evalErrorPolicy :: forall e. Exception e => e -> ErrorPolicy -> Maybe (SuspendDecision DiffTime) Source #
evalErrorPolicies :: forall e. Exception e => e -> [ErrorPolicy] -> Maybe (SuspendDecision DiffTime) Source #
Evaluate a list of ErrorPolicys; If none of them applies this function
returns Nothing, in this case the exception will be traced and not thrown.
type CompleteApplication m s addr r = Result addr r -> s -> STM m (CompleteApplicationResult m addr s) Source #
Complete a connection, which receive application result (or exception).
data CompleteApplicationResult m addr s Source #
Constructors
| CompleteApplicationResult | |
Fields
| |
Instances
| Functor (CompleteApplicationResult m addr) Source # | |
Defined in Ouroboros.Network.ErrorPolicy Methods fmap :: (a -> b) -> CompleteApplicationResult m addr a -> CompleteApplicationResult m addr b # (<$) :: a -> CompleteApplicationResult m addr b -> CompleteApplicationResult m addr a # | |
data Result addr r where Source #
Result of the connection thread. It's either result of an application, or an exception thrown by it.
Constructors
| ApplicationResult :: !Time -> !addr -> !r -> Result addr r | |
| Connected :: !Time -> !addr -> Result addr r | |
| ConnectionError :: Exception e => !Time -> !addr -> !e -> Result addr r | |
| ApplicationError :: Exception e => !Time -> !addr -> !e -> Result addr r |
completeApplicationTx :: forall m addr a. (MonadAsync m, Ord addr, Ord (Async m ())) => ErrorPolicies -> CompleteApplication m (PeerStates m addr) addr a Source #
CompleteApplication callback
Traces
data ErrorPolicyTrace Source #
Trace data for error policies
Constructors
| ErrorPolicySuspendPeer (Maybe (ConnectionOrApplicationExceptionTrace SomeException)) !DiffTime !DiffTime | suspending peer with a given exception until |
| ErrorPolicySuspendConsumer (Maybe (ConnectionOrApplicationExceptionTrace SomeException)) !DiffTime | suspending consumer until |
| ErrorPolicyLocalNodeError (ConnectionOrApplicationExceptionTrace SomeException) | caught a local exception |
| ErrorPolicyResumePeer | resume a peer (both consumer and producer) |
| ErrorPolicyKeepSuspended | consumer was suspended until producer will resume |
| ErrorPolicyResumeConsumer | resume consumer |
| ErrorPolicyResumeProducer | resume producer |
| ErrorPolicyUnhandledApplicationException SomeException | an application throwed an exception, which was not handled by any
|
| ErrorPolicyUnhandledConnectionException SomeException |
|
| ErrorPolicyAcceptException IOException |
|
Instances
| Show ErrorPolicyTrace Source # | |
Defined in Ouroboros.Network.ErrorPolicy Methods showsPrec :: Int -> ErrorPolicyTrace -> ShowS # show :: ErrorPolicyTrace -> String # showList :: [ErrorPolicyTrace] -> ShowS # | |
traceErrorPolicy :: Either (ConnectionOrApplicationExceptionTrace SomeException) r -> SuspendDecision DiffTime -> Maybe ErrorPolicyTrace Source #
Re-exports of PeerState
data PeerStates m addr Source #
Map from addresses to PeerStates; it will be be shared in a StrictTVar.
Abstracting t is useful for tests, the IO version will use Time IO.
Instances
| Eq addr => Eq (PeerStates IO addr) Source # | |
Defined in Ouroboros.Network.Subscription.PeerState Methods (==) :: PeerStates IO addr -> PeerStates IO addr -> Bool # (/=) :: PeerStates IO addr -> PeerStates IO addr -> Bool # | |
| Show addr => Show (PeerStates IO addr) Source # | |
Defined in Ouroboros.Network.Subscription.PeerState | |
data SuspendDecision t Source #
Semigroup of commands which acts on PeerState. The t variable might
be initiated to DiffTime or Time m.
This semigroup allows to either suspend both consumer and producer or just the consumer part.
Constructors
| SuspendPeer !t !t | peer is suspend; The first |
| SuspendConsumer !t | suspend local consumer / initiator side until |
| Throw | throw an error from the main thread. |