multipool-0.1.0.1: Generalized system for reading and writing to distributed systems that have primary/replica topologies.

Safe HaskellNone
LanguageHaskell2010

Data.MultiPool

Documentation

newtype InstanceName backend Source #

Constructors

InstanceName 

Instances

Eq (InstanceName backend) Source # 

Methods

(==) :: InstanceName backend -> InstanceName backend -> Bool #

(/=) :: InstanceName backend -> InstanceName backend -> Bool #

Ord (InstanceName backend) Source # 

Methods

compare :: InstanceName backend -> InstanceName backend -> Ordering #

(<) :: InstanceName backend -> InstanceName backend -> Bool #

(<=) :: InstanceName backend -> InstanceName backend -> Bool #

(>) :: InstanceName backend -> InstanceName backend -> Bool #

(>=) :: InstanceName backend -> InstanceName backend -> Bool #

max :: InstanceName backend -> InstanceName backend -> InstanceName backend #

min :: InstanceName backend -> InstanceName backend -> InstanceName backend #

Show (InstanceName backend) Source # 

Methods

showsPrec :: Int -> InstanceName backend -> ShowS #

show :: InstanceName backend -> String #

showList :: [InstanceName backend] -> ShowS #

Hashable (InstanceName backend) Source # 

Methods

hashWithSalt :: Int -> InstanceName backend -> Int #

hash :: InstanceName backend -> Int #

class Monad m => MultiPoolBackend m backend where Source #

Associated Types

type Masters backend :: * Source #

type Replicas backend :: * Source #

type MasterConnection backend :: * Source #

type ReplicaConnection backend :: * Source #

type MasterIdentifier backend :: * Source #

type ReplicaIdentifier backend :: * Source #

Methods

runWriteAny :: MultiPool backend -> ReaderT (MasterConnection backend) m a -> m a Source #

runWrite :: MultiPool backend -> MasterIdentifier backend -> ReaderT (MasterConnection backend) m a -> m a Source #

runReadMaster :: MultiPool backend -> MasterIdentifier backend -> ReaderT (ReplicaConnection backend) m a -> m a Source #

runReadAnyMaster :: MultiPool backend -> ReaderT (ReplicaConnection backend) m a -> m a Source #

runReadAny :: MultiPool backend -> ReaderT (ReplicaConnection backend) m a -> m a Source #

runRead :: MultiPool backend -> ReplicaIdentifier backend -> ReaderT (ReplicaConnection backend) m a -> m a Source #

data MultiPool backend Source #

Constructors

MultiPool 

forReplicas :: (MultiPoolBackend m backend, Replicas backend ~ HashMap k v) => MultiPool backend -> (k -> v -> m a) -> m [a] Source #

roundRobin :: MonadIO m => [choice] -> m (a -> IO (Maybe choice)) Source #