Safe Haskell | None |
---|---|
Language | Haskell2010 |
Raft.Log
Synopsis
- data EntryIssuer
- data EntryValue v
- = EntryValue v
- | NoValue
- newtype EntryHash = EntryHash {}
- genesisHash :: EntryHash
- hashEntry :: Serialize v => Entry v -> EntryHash
- data Entry v = Entry {}
- type Entries v = Seq (Entry v)
- lastEntryIndex :: Entries v -> Maybe Index
- data LastLogEntry v
- = LastLogEntry (Entry v)
- | NoLogEntries
- hashLastLogEntry :: Serialize v => LastLogEntry v -> EntryHash
- lastLogEntryIndex :: LastLogEntry v -> Index
- lastLogEntryIssuer :: LastLogEntry v -> Maybe EntryIssuer
- lastLogEntryTerm :: LastLogEntry v -> Term
- lastLogEntryIndexAndTerm :: LastLogEntry v -> (Index, Term)
- class RaftInitLog m v where
- type RaftInitLogError m
- initializeLog :: Proxy v -> m (Either (RaftInitLogError m) ())
- data ReadEntriesSpec
- data ReadEntriesRes v
- = OneEntry (Entry v)
- | ManyEntries (Entries v)
- data IndexInterval = IndexInterval (Maybe Index) (Maybe Index)
- class (Show (RaftReadLogError m), Monad m) => RaftReadLog m v where
- type RaftReadLogError m
- readLogEntry :: Exception (RaftReadLogError m) => Index -> m (Either (RaftReadLogError m) (Maybe (Entry v)))
- readLogEntriesFrom :: Exception (RaftReadLogError m) => Index -> m (Either (RaftReadLogError m) (Entries v))
- readLastLogEntry :: Exception (RaftReadLogError m) => m (Either (RaftReadLogError m) (Maybe (Entry v)))
- class (Show (RaftWriteLogError m), Monad m) => RaftWriteLog m v where
- type RaftWriteLogError m
- writeLogEntries :: Exception (RaftWriteLogError m) => Entries v -> m (Either (RaftWriteLogError m) ())
- class (Show (RaftDeleteLogError m), Monad m) => RaftDeleteLog m v where
- type RaftDeleteLogError m
- deleteLogEntriesFrom :: Exception (RaftDeleteLogError m) => Index -> m (Either (RaftDeleteLogError m) (DeleteSuccess v))
- data DeleteSuccess v = DeleteSuccess
- type RaftLog m v = (RaftInitLog m v, RaftReadLog m v, RaftWriteLog m v, RaftDeleteLog m v)
- data RaftLogError m
- type RaftLogExceptions m = (Exception (RaftInitLogError m), Exception (RaftReadLogError m), Exception (RaftWriteLogError m), Exception (RaftDeleteLogError m))
- updateLog :: forall m v. (RaftDeleteLog m v, Exception (RaftDeleteLogError m), RaftWriteLog m v, Exception (RaftWriteLogError m)) => Entries v -> m (Either (RaftLogError m) (Maybe Index))
- clientReqData :: Entries v -> Map ClientId (SerialNum, Index)
- readEntries :: forall m v. (RaftReadLog m v, Exception (RaftReadLogError m)) => ReadEntriesSpec -> m (Either (ReadEntriesError m) (ReadEntriesRes v))
Documentation
data EntryIssuer Source #
Constructors
ClientIssuer ClientId SerialNum | |
LeaderIssuer LeaderId |
Instances
data EntryValue v Source #
Constructors
EntryValue v | |
NoValue | Used as a first committed entry of a new term |
Instances
Eq v => Eq (EntryValue v) Source # | |
Defined in Raft.Log | |
Show v => Show (EntryValue v) Source # | |
Defined in Raft.Log Methods showsPrec :: Int -> EntryValue v -> ShowS # show :: EntryValue v -> String # showList :: [EntryValue v] -> ShowS # | |
Generic (EntryValue v) Source # | |
Serialize v => Serialize (EntryValue v) Source # | |
Defined in Raft.Log | |
(Typeable v, Serialize v) => FromField (EntryValue v) Source # | |
Defined in Raft.Log Methods fromField :: FieldParser (EntryValue v) # | |
Serialize v => ToField (EntryValue v) Source # | |
Defined in Raft.Log Methods toField :: EntryValue v -> Action # | |
type Rep (EntryValue v) Source # | |
Defined in Raft.Log type Rep (EntryValue v) = D1 (MetaData "EntryValue" "Raft.Log" "libraft-0.5.0.0-J9sQlo4v2xjSwCkwompQR" False) (C1 (MetaCons "EntryValue" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 v)) :+: C1 (MetaCons "NoValue" PrefixI False) (U1 :: Type -> Type)) |
Constructors
EntryHash | |
Fields |
Instances
Eq EntryHash Source # | |
Ord EntryHash Source # | |
Read EntryHash Source # | |
Show EntryHash Source # | |
Generic EntryHash Source # | |
Serialize EntryHash Source # | |
FromField EntryHash Source # | |
Defined in Raft.Log Methods | |
ToField EntryHash Source # | |
type Rep EntryHash Source # | |
Defined in Raft.Log type Rep EntryHash = D1 (MetaData "EntryHash" "Raft.Log" "libraft-0.5.0.0-J9sQlo4v2xjSwCkwompQR" True) (C1 (MetaCons "EntryHash" PrefixI True) (S1 (MetaSel (Just "unEntryHash") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ByteString))) |
Representation of an entry in the replicated log
Constructors
Entry | |
Fields
|
Instances
Eq v => Eq (Entry v) Source # | |
Show v => Show (Entry v) Source # | |
Generic (Entry v) Source # | |
Serialize v => Serialize (Entry v) Source # | |
type Rep (Entry v) Source # | |
Defined in Raft.Log type Rep (Entry v) = D1 (MetaData "Entry" "Raft.Log" "libraft-0.5.0.0-J9sQlo4v2xjSwCkwompQR" False) (C1 (MetaCons "Entry" PrefixI True) ((S1 (MetaSel (Just "entryIndex") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Index) :*: S1 (MetaSel (Just "entryTerm") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Term)) :*: (S1 (MetaSel (Just "entryValue") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (EntryValue v)) :*: (S1 (MetaSel (Just "entryIssuer") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 EntryIssuer) :*: S1 (MetaSel (Just "entryPrevHash") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 EntryHash))))) |
data LastLogEntry v Source #
The datatype representing a node's last log entry
Constructors
LastLogEntry (Entry v) | |
NoLogEntries |
Instances
Show v => Show (LastLogEntry v) Source # | |
Defined in Raft.Log Methods showsPrec :: Int -> LastLogEntry v -> ShowS # show :: LastLogEntry v -> String # showList :: [LastLogEntry v] -> ShowS # |
hashLastLogEntry :: Serialize v => LastLogEntry v -> EntryHash Source #
lastLogEntryIndex :: LastLogEntry v -> Index Source #
lastLogEntryTerm :: LastLogEntry v -> Term Source #
lastLogEntryIndexAndTerm :: LastLogEntry v -> (Index, Term) Source #
class RaftInitLog m v where Source #
Provides an interface to initialize a fresh log entry storage
Associated Types
type RaftInitLogError m Source #
Methods
initializeLog :: Proxy v -> m (Either (RaftInitLogError m) ()) Source #
Instances
data ReadEntriesSpec Source #
Constructors
ByIndex Index | |
ByIndices IndexInterval |
Instances
Show ReadEntriesSpec Source # | |
Defined in Raft.Log Methods showsPrec :: Int -> ReadEntriesSpec -> ShowS # show :: ReadEntriesSpec -> String # showList :: [ReadEntriesSpec] -> ShowS # | |
Generic ReadEntriesSpec Source # | |
Defined in Raft.Log Associated Types type Rep ReadEntriesSpec :: Type -> Type # Methods from :: ReadEntriesSpec -> Rep ReadEntriesSpec x # to :: Rep ReadEntriesSpec x -> ReadEntriesSpec # | |
Serialize ReadEntriesSpec Source # | |
Defined in Raft.Log | |
type Rep ReadEntriesSpec Source # | |
Defined in Raft.Log type Rep ReadEntriesSpec = D1 (MetaData "ReadEntriesSpec" "Raft.Log" "libraft-0.5.0.0-J9sQlo4v2xjSwCkwompQR" False) (C1 (MetaCons "ByIndex" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Index)) :+: C1 (MetaCons "ByIndices" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 IndexInterval))) |
data ReadEntriesRes v Source #
The result of reading one or more
Constructors
OneEntry (Entry v) | |
ManyEntries (Entries v) |
data IndexInterval Source #
Constructors
IndexInterval (Maybe Index) (Maybe Index) |
Instances
Show IndexInterval Source # | |
Defined in Raft.Log Methods showsPrec :: Int -> IndexInterval -> ShowS # show :: IndexInterval -> String # showList :: [IndexInterval] -> ShowS # | |
Generic IndexInterval Source # | |
Serialize IndexInterval Source # | |
Defined in Raft.Log | |
type Rep IndexInterval Source # | |
Defined in Raft.Log type Rep IndexInterval = D1 (MetaData "IndexInterval" "Raft.Log" "libraft-0.5.0.0-J9sQlo4v2xjSwCkwompQR" False) (C1 (MetaCons "IndexInterval" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Index)) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Index)))) |
class (Show (RaftReadLogError m), Monad m) => RaftReadLog m v where Source #
Provides an interface for nodes to read log entries from storage.
Minimal complete definition
Associated Types
type RaftReadLogError m Source #
Methods
readLogEntry :: Exception (RaftReadLogError m) => Index -> m (Either (RaftReadLogError m) (Maybe (Entry v))) Source #
Read the log at a given index
readLogEntriesFrom :: Exception (RaftReadLogError m) => Index -> m (Either (RaftReadLogError m) (Entries v)) Source #
Read log entries from a specific index onwards, including the specific index
readLastLogEntry :: Exception (RaftReadLogError m) => m (Either (RaftReadLogError m) (Maybe (Entry v))) Source #
Read the last log entry in the log
readLogEntriesFrom :: Exception (RaftReadLogError m) => Index -> m (Either (RaftReadLogError m) (Entries v)) Source #
Read log entries from a specific index onwards, including the specific index
Instances
class (Show (RaftWriteLogError m), Monad m) => RaftWriteLog m v where Source #
Provides an interface for nodes to write log entries to storage.
Associated Types
type RaftWriteLogError m Source #
Methods
writeLogEntries :: Exception (RaftWriteLogError m) => Entries v -> m (Either (RaftWriteLogError m) ()) Source #
Write the given log entries to storage
Instances
class (Show (RaftDeleteLogError m), Monad m) => RaftDeleteLog m v where Source #
Provides an interface for nodes to delete log entries from storage.
Associated Types
type RaftDeleteLogError m Source #
Methods
deleteLogEntriesFrom :: Exception (RaftDeleteLogError m) => Index -> m (Either (RaftDeleteLogError m) (DeleteSuccess v)) Source #
Delete log entries from a given index; e.g. 'deleteLogEntriesFrom 7' should delete every log entry with an index >= 7.
Instances
data DeleteSuccess v Source #
Constructors
DeleteSuccess |
type RaftLog m v = (RaftInitLog m v, RaftReadLog m v, RaftWriteLog m v, RaftDeleteLog m v) Source #
data RaftLogError m Source #
Representation of possible errors that come from reading, writing or deleting logs from the persistent storage
Instances
Show (RaftLogError m) Source # | |
Defined in Raft.Log Methods showsPrec :: Int -> RaftLogError m -> ShowS # show :: RaftLogError m -> String # showList :: [RaftLogError m] -> ShowS # |
type RaftLogExceptions m = (Exception (RaftInitLogError m), Exception (RaftReadLogError m), Exception (RaftWriteLogError m), Exception (RaftDeleteLogError m)) Source #
updateLog :: forall m v. (RaftDeleteLog m v, Exception (RaftDeleteLogError m), RaftWriteLog m v, Exception (RaftWriteLogError m)) => Entries v -> m (Either (RaftLogError m) (Maybe Index)) Source #
readEntries :: forall m v. (RaftReadLog m v, Exception (RaftReadLogError m)) => ReadEntriesSpec -> m (Either (ReadEntriesError m) (ReadEntriesRes v)) Source #