| 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 #