libraft-0.1.1.0: Raft consensus algorithm

Safe HaskellNone
LanguageHaskell2010

Raft.Monad

Synopsis

Documentation

class RSMP sm v | sm -> v where Source #

Interface to handle commands in the underlying state machine. Functional dependency permitting only a single state machine command to be defined to update the state machine.

Associated Types

data RSMPError sm v Source #

type RSMPCtx sm v = ctx | ctx -> sm v Source #

Methods

applyCmdRSMP :: RSMPCtx sm v -> sm -> v -> Either (RSMPError sm v) sm Source #

class (Monad m, RSMP sm v) => RSM sm v m | m sm -> v where Source #

Methods

validateCmd :: v -> m (Either (RSMPError sm v) ()) Source #

askRSMPCtx :: m (RSMPCtx sm v) Source #

applyEntryRSM :: RSM sm v m => sm -> Entry v -> m (Either (RSMPError sm v) sm) Source #

tellAction :: Action sm v -> TransitionM sm v () Source #

tellActions :: [Action sm v] -> TransitionM sm v () Source #

newtype TransitionM sm v a Source #

Instances
MonadState PersistentState (TransitionM sm v) Source # 
Instance details

Defined in Raft.Monad

MonadWriter [Action sm v] (TransitionM sm v) Source # 
Instance details

Defined in Raft.Monad

Methods

writer :: (a, [Action sm v]) -> TransitionM sm v a #

tell :: [Action sm v] -> TransitionM sm v () #

listen :: TransitionM sm v a -> TransitionM sm v (a, [Action sm v]) #

pass :: TransitionM sm v (a, [Action sm v] -> [Action sm v]) -> TransitionM sm v a #

MonadReader (TransitionEnv sm) (TransitionM sm v) Source # 
Instance details

Defined in Raft.Monad

Methods

ask :: TransitionM sm v (TransitionEnv sm) #

local :: (TransitionEnv sm -> TransitionEnv sm) -> TransitionM sm v a -> TransitionM sm v a #

reader :: (TransitionEnv sm -> a) -> TransitionM sm v a #

Monad (TransitionM sm v) Source # 
Instance details

Defined in Raft.Monad

Methods

(>>=) :: TransitionM sm v a -> (a -> TransitionM sm v b) -> TransitionM sm v b #

(>>) :: TransitionM sm v a -> TransitionM sm v b -> TransitionM sm v b #

return :: a -> TransitionM sm v a #

fail :: String -> TransitionM sm v a #

Functor (TransitionM sm v) Source # 
Instance details

Defined in Raft.Monad

Methods

fmap :: (a -> b) -> TransitionM sm v a -> TransitionM sm v b #

(<$) :: a -> TransitionM sm v b -> TransitionM sm v a #

Applicative (TransitionM sm v) Source # 
Instance details

Defined in Raft.Monad

Methods

pure :: a -> TransitionM sm v a #

(<*>) :: TransitionM sm v (a -> b) -> TransitionM sm v a -> TransitionM sm v b #

liftA2 :: (a -> b -> c) -> TransitionM sm v a -> TransitionM sm v b -> TransitionM sm v c #

(*>) :: TransitionM sm v a -> TransitionM sm v b -> TransitionM sm v b #

(<*) :: TransitionM sm v a -> TransitionM sm v b -> TransitionM sm v a #

type RPCHandler ns sm r v = RPCType r v => NodeState ns -> NodeId -> r -> TransitionM sm v (ResultState ns) Source #

type TimeoutHandler ns sm v = NodeState ns -> Timeout -> TransitionM sm v (ResultState ns) Source #

resetElectionTimeout :: TransitionM sm v () Source #

Resets the election timeout.

startElection Source #

Arguments

:: Index 
-> Index 
-> (Index, Term)

Last log entry data

-> TransitionM sm v CandidateState