libraft-0.1.1.0: Raft consensus algorithm

Safe HaskellNone
LanguageHaskell2010

Raft.RPC

Synopsis

Documentation

class RaftSendRPC m v where #

Interface for nodes to send messages to one another. E.g. Control.Concurrent.Chan, Network.Socket, etc.

Methods

sendRPC :: NodeId -> RPCMessage v -> m () #

Instances
(MonadIO m, MonadConc m, Serialize v, Show v) => RaftSendRPC (RaftSocketT v m) v # 
Instance details

Defined in Examples.Raft.Socket.Node

Methods

sendRPC :: NodeId -> RPCMessage v -> RaftSocketT v m () #

class Show (RaftRecvRPCError m v) => RaftRecvRPC m v where #

Interface for nodes to receive messages from one another

Associated Types

type RaftRecvRPCError m v #

Instances
(MonadIO m, MonadConc m, Show v) => RaftRecvRPC (RaftSocketT v m) v # 
Instance details

Defined in Examples.Raft.Socket.Node

Associated Types

type RaftRecvRPCError (RaftSocketT v m) v :: Type #

data RPCMessage v #

Representation of a message sent between nodes

Constructors

RPCMessage 

Fields

Instances
Show v => Show (RPCMessage v) # 
Instance details

Defined in Raft.RPC

Generic (RPCMessage v) # 
Instance details

Defined in Raft.RPC

Associated Types

type Rep (RPCMessage v) :: Type -> Type #

Methods

from :: RPCMessage v -> Rep (RPCMessage v) x #

to :: Rep (RPCMessage v) x -> RPCMessage v #

Serialize v => Serialize (RPCMessage v) # 
Instance details

Defined in Raft.RPC

Methods

put :: Putter (RPCMessage v) #

get :: Get (RPCMessage v) #

type Rep (RPCMessage v) # 
Instance details

Defined in Raft.RPC

type Rep (RPCMessage v) = D1 (MetaData "RPCMessage" "Raft.RPC" "libraft-0.1.1.0-K88ErXXABXGJHe9OF75EJD" False) (C1 (MetaCons "RPCMessage" PrefixI True) (S1 (MetaSel (Just "sender") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 NodeId) :*: S1 (MetaSel (Just "rpc") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (RPC v))))

data RPC v #

Instances
Show v => Show (RPC v) # 
Instance details

Defined in Raft.RPC

Methods

showsPrec :: Int -> RPC v -> ShowS #

show :: RPC v -> String #

showList :: [RPC v] -> ShowS #

Generic (RPC v) # 
Instance details

Defined in Raft.RPC

Associated Types

type Rep (RPC v) :: Type -> Type #

Methods

from :: RPC v -> Rep (RPC v) x #

to :: Rep (RPC v) x -> RPC v #

Serialize v => Serialize (RPC v) # 
Instance details

Defined in Raft.RPC

Methods

put :: Putter (RPC v) #

get :: Get (RPC v) #

type Rep (RPC v) # 
Instance details

Defined in Raft.RPC

class RPCType a v where #

Methods

toRPC :: a -> RPC v #

Instances
RPCType RequestVoteResponse v # 
Instance details

Defined in Raft.RPC

RPCType RequestVote v # 
Instance details

Defined in Raft.RPC

Methods

toRPC :: RequestVote -> RPC v #

RPCType AppendEntriesResponse v # 
Instance details

Defined in Raft.RPC

RPCType (AppendEntries v) v # 
Instance details

Defined in Raft.RPC

Methods

toRPC :: AppendEntries v -> RPC v #

rpcTerm :: RPC v -> Term #

data EntriesSpec v #

Instances
Show v => Show (EntriesSpec v) # 
Instance details

Defined in Raft.RPC

data AppendEntriesData v #

The data used to construct an AppendEntries value, snapshotted from the node state at the time the AppendEntries val should be created.

Instances
Show v => Show (AppendEntriesData v) # 
Instance details

Defined in Raft.RPC

data AppendEntries v #

Representation of a message sent from a leader to its peers

Constructors

AppendEntries 

Fields

Instances
Show v => Show (AppendEntries v) # 
Instance details

Defined in Raft.RPC

Generic (AppendEntries v) # 
Instance details

Defined in Raft.RPC

Associated Types

type Rep (AppendEntries v) :: Type -> Type #

Serialize v => Serialize (AppendEntries v) # 
Instance details

Defined in Raft.RPC

RPCType (AppendEntries v) v # 
Instance details

Defined in Raft.RPC

Methods

toRPC :: AppendEntries v -> RPC v #

type Rep (AppendEntries v) # 
Instance details

Defined in Raft.RPC

data AppendEntriesResponse #

Representation of the response from a follower to an AppendEntries message

Constructors

AppendEntriesResponse 

Fields

Instances
Show AppendEntriesResponse # 
Instance details

Defined in Raft.RPC

Generic AppendEntriesResponse # 
Instance details

Defined in Raft.RPC

Associated Types

type Rep AppendEntriesResponse :: Type -> Type #

Serialize AppendEntriesResponse # 
Instance details

Defined in Raft.RPC

RPCType AppendEntriesResponse v # 
Instance details

Defined in Raft.RPC

type Rep AppendEntriesResponse # 
Instance details

Defined in Raft.RPC

type Rep AppendEntriesResponse = D1 (MetaData "AppendEntriesResponse" "Raft.RPC" "libraft-0.1.1.0-K88ErXXABXGJHe9OF75EJD" False) (C1 (MetaCons "AppendEntriesResponse" PrefixI True) (S1 (MetaSel (Just "aerTerm") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Term) :*: (S1 (MetaSel (Just "aerSuccess") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool) :*: S1 (MetaSel (Just "aerReadRequest") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))))

data RequestVote #

Representation of the message sent by candidates to their peers to request their vote

Constructors

RequestVote 

Fields

Instances
Show RequestVote # 
Instance details

Defined in Raft.RPC

Generic RequestVote # 
Instance details

Defined in Raft.RPC

Associated Types

type Rep RequestVote :: Type -> Type #

Serialize RequestVote # 
Instance details

Defined in Raft.RPC

RPCType RequestVote v # 
Instance details

Defined in Raft.RPC

Methods

toRPC :: RequestVote -> RPC v #

type Rep RequestVote # 
Instance details

Defined in Raft.RPC

data RequestVoteResponse #

Representation of a response to a RequestVote message

Constructors

RequestVoteResponse 

Fields

Instances
Show RequestVoteResponse # 
Instance details

Defined in Raft.RPC

Generic RequestVoteResponse # 
Instance details

Defined in Raft.RPC

Associated Types

type Rep RequestVoteResponse :: Type -> Type #

Serialize RequestVoteResponse # 
Instance details

Defined in Raft.RPC

RPCType RequestVoteResponse v # 
Instance details

Defined in Raft.RPC

type Rep RequestVoteResponse # 
Instance details

Defined in Raft.RPC

type Rep RequestVoteResponse = D1 (MetaData "RequestVoteResponse" "Raft.RPC" "libraft-0.1.1.0-K88ErXXABXGJHe9OF75EJD" False) (C1 (MetaCons "RequestVoteResponse" PrefixI True) (S1 (MetaSel (Just "rvrTerm") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Term) :*: S1 (MetaSel (Just "rvrVoteGranted") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))