libraft-0.1.1.0: Raft consensus algorithm

Safe HaskellNone
LanguageHaskell2010

Raft.RPC

Synopsis

Documentation

class RaftSendRPC m v where Source #

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

Methods

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

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

Defined in Examples.Raft.Socket.Node

Methods

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

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

Interface for nodes to receive messages from one another

Associated Types

type RaftRecvRPCError m v Source #

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

Defined in Examples.Raft.Socket.Node

Associated Types

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

data RPCMessage v Source #

Representation of a message sent between nodes

Constructors

RPCMessage 

Fields

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

Defined in Raft.RPC

Generic (RPCMessage v) Source # 
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) Source # 
Instance details

Defined in Raft.RPC

Methods

put :: Putter (RPCMessage v) #

get :: Get (RPCMessage v) #

type Rep (RPCMessage v) Source # 
Instance details

Defined in Raft.RPC

type Rep (RPCMessage v) = D1 (MetaData "RPCMessage" "Raft.RPC" "libraft-0.1.1.0-8nwazCMBvi7EUIW9UIbZhF" 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 Source #

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

Defined in Raft.RPC

Methods

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

show :: RPC v -> String #

showList :: [RPC v] -> ShowS #

Generic (RPC v) Source # 
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) Source # 
Instance details

Defined in Raft.RPC

Methods

put :: Putter (RPC v) #

get :: Get (RPC v) #

type Rep (RPC v) Source # 
Instance details

Defined in Raft.RPC

class RPCType a v where Source #

Methods

toRPC :: a -> RPC v Source #

Instances
RPCType RequestVoteResponse v Source # 
Instance details

Defined in Raft.RPC

RPCType RequestVote v Source # 
Instance details

Defined in Raft.RPC

Methods

toRPC :: RequestVote -> RPC v Source #

RPCType AppendEntriesResponse v Source # 
Instance details

Defined in Raft.RPC

RPCType (AppendEntries v) v Source # 
Instance details

Defined in Raft.RPC

Methods

toRPC :: AppendEntries v -> RPC v Source #

data EntriesSpec v Source #

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

Defined in Raft.RPC

data AppendEntriesData v Source #

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) Source # 
Instance details

Defined in Raft.RPC

data AppendEntries v Source #

Representation of a message sent from a leader to its peers

Constructors

AppendEntries 

Fields

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

Defined in Raft.RPC

Generic (AppendEntries v) Source # 
Instance details

Defined in Raft.RPC

Associated Types

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

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

Defined in Raft.RPC

RPCType (AppendEntries v) v Source # 
Instance details

Defined in Raft.RPC

Methods

toRPC :: AppendEntries v -> RPC v Source #

type Rep (AppendEntries v) Source # 
Instance details

Defined in Raft.RPC

data AppendEntriesResponse Source #

Representation of the response from a follower to an AppendEntries message

Constructors

AppendEntriesResponse 

Fields

data RequestVote Source #

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

Constructors

RequestVote 

Fields

Instances
Show RequestVote Source # 
Instance details

Defined in Raft.RPC

Generic RequestVote Source # 
Instance details

Defined in Raft.RPC

Associated Types

type Rep RequestVote :: Type -> Type #

Serialize RequestVote Source # 
Instance details

Defined in Raft.RPC

RPCType RequestVote v Source # 
Instance details

Defined in Raft.RPC

Methods

toRPC :: RequestVote -> RPC v Source #

type Rep RequestVote Source # 
Instance details

Defined in Raft.RPC

data RequestVoteResponse Source #

Representation of a response to a RequestVote message

Constructors

RequestVoteResponse 

Fields

Instances
Show RequestVoteResponse Source # 
Instance details

Defined in Raft.RPC

Generic RequestVoteResponse Source # 
Instance details

Defined in Raft.RPC

Associated Types

type Rep RequestVoteResponse :: Type -> Type #

Serialize RequestVoteResponse Source # 
Instance details

Defined in Raft.RPC

RPCType RequestVoteResponse v Source # 
Instance details

Defined in Raft.RPC

type Rep RequestVoteResponse Source # 
Instance details

Defined in Raft.RPC

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