libraft-0.5.0.0: Raft consensus algorithm

Safe HaskellNone
LanguageHaskell2010

Raft.Log

Synopsis

Documentation

data EntryIssuer Source #

Instances
Eq EntryIssuer Source # 
Instance details

Defined in Raft.Log

Read EntryIssuer Source # 
Instance details

Defined in Raft.Log

Show EntryIssuer Source # 
Instance details

Defined in Raft.Log

Generic EntryIssuer Source # 
Instance details

Defined in Raft.Log

Associated Types

type Rep EntryIssuer :: Type -> Type #

Serialize EntryIssuer Source # 
Instance details

Defined in Raft.Log

FromField EntryIssuer Source # 
Instance details

Defined in Raft.Log

ToField EntryIssuer Source # 
Instance details

Defined in Raft.Log

type Rep EntryIssuer Source # 
Instance details

Defined in Raft.Log

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

Defined in Raft.Log

Methods

(==) :: EntryValue v -> EntryValue v -> Bool #

(/=) :: EntryValue v -> EntryValue v -> Bool #

Show v => Show (EntryValue v) Source # 
Instance details

Defined in Raft.Log

Generic (EntryValue v) Source # 
Instance details

Defined in Raft.Log

Associated Types

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

Methods

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

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

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

Defined in Raft.Log

Methods

put :: Putter (EntryValue v) #

get :: Get (EntryValue v) #

(Typeable v, Serialize v) => FromField (EntryValue v) Source # 
Instance details

Defined in Raft.Log

Serialize v => ToField (EntryValue v) Source # 
Instance details

Defined in Raft.Log

Methods

toField :: EntryValue v -> Action #

type Rep (EntryValue v) Source # 
Instance details

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

newtype EntryHash Source #

Constructors

EntryHash 
Instances
Eq EntryHash Source # 
Instance details

Defined in Raft.Log

Ord EntryHash Source # 
Instance details

Defined in Raft.Log

Read EntryHash Source # 
Instance details

Defined in Raft.Log

Show EntryHash Source # 
Instance details

Defined in Raft.Log

Generic EntryHash Source # 
Instance details

Defined in Raft.Log

Associated Types

type Rep EntryHash :: Type -> Type #

Serialize EntryHash Source # 
Instance details

Defined in Raft.Log

FromField EntryHash Source # 
Instance details

Defined in Raft.Log

ToField EntryHash Source # 
Instance details

Defined in Raft.Log

Methods

toField :: EntryHash -> Action #

type Rep EntryHash Source # 
Instance details

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

data Entry v Source #

Representation of an entry in the replicated log

Constructors

Entry 

Fields

Instances
Eq v => Eq (Entry v) Source # 
Instance details

Defined in Raft.Log

Methods

(==) :: Entry v -> Entry v -> Bool #

(/=) :: Entry v -> Entry v -> Bool #

Show v => Show (Entry v) Source # 
Instance details

Defined in Raft.Log

Methods

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

show :: Entry v -> String #

showList :: [Entry v] -> ShowS #

Generic (Entry v) Source # 
Instance details

Defined in Raft.Log

Associated Types

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

Methods

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

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

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

Defined in Raft.Log

Methods

put :: Putter (Entry v) #

get :: Get (Entry v) #

type Rep (Entry v) Source # 
Instance details

Defined in Raft.Log

type Entries v = Seq (Entry v) Source #

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

Defined in Raft.Log

class RaftInitLog m v where Source #

Provides an interface to initialize a fresh log entry storage

Associated Types

type RaftInitLogError m Source #

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

Defined in Raft.Log

Generic IndexInterval Source # 
Instance details

Defined in Raft.Log

Associated Types

type Rep IndexInterval :: Type -> Type #

Serialize IndexInterval Source # 
Instance details

Defined in Raft.Log

type Rep IndexInterval Source # 
Instance details

Defined in Raft.Log

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

readLogEntry, readLastLogEntry

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
(Typeable v, Serialize v, MonadIO m) => RaftReadLog (RaftPostgresT m) v Source # 
Instance details

Defined in Raft.Log.PostgreSQL

Associated Types

type RaftReadLogError (RaftPostgresT m) :: Type Source #

RaftReadLog m v => RaftReadLog (RaftPersistFileStoreT m) v Source # 
Instance details

Defined in Examples.Raft.FileStore.Persistent

Associated Types

type RaftReadLogError (RaftPersistFileStoreT m) :: Type Source #

(MonadIO m, Serialize v) => RaftReadLog (RaftLogFileStoreT m) v Source # 
Instance details

Defined in Examples.Raft.FileStore.Log

Associated Types

type RaftReadLogError (RaftLogFileStoreT m) :: Type Source #

RaftReadLog m v => RaftReadLog (RaftSocketT sm v m) v Source # 
Instance details

Defined in Examples.Raft.Socket.Node

Associated Types

type RaftReadLogError (RaftSocketT sm v m) :: Type Source #

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

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.

data DeleteSuccess v Source #

Constructors

DeleteSuccess 

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

Defined in Raft.Log

readEntries :: forall m v. (RaftReadLog m v, Exception (RaftReadLogError m)) => ReadEntriesSpec -> m (Either (ReadEntriesError m) (ReadEntriesRes v)) Source #