Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data NodeSocketEnv v = NodeSocketEnv {
- nsSocket :: Socket
- nsPeers :: TVar (STM IO) (Map NodeId Socket)
- nsMsgQueue :: TChan (STM IO) (RPCMessage v)
- nsClientReqQueue :: TChan (STM IO) (ClientRequest v)
- newtype RaftSocketT v m a = RaftSocketT {
- unRaftSocketT :: ReaderT (NodeSocketEnv v) m a
- retryConnection :: (Serialize v, MonadIO m, MonadConc m) => TVar (STM m) (Map NodeId Socket) -> NodeId -> Maybe Socket -> RPCMessage v -> SomeException -> m (Maybe Socket)
- handleFailure :: (MonadIO m, MonadConc m) => TVar (STM m) (Map NodeId Socket) -> [NodeId] -> Maybe Socket -> SomeException -> m (Maybe Socket)
- runRaftSocketT :: (MonadIO m, MonadConc m) => NodeSocketEnv v -> RaftSocketT v m a -> m a
- acceptForkNode :: forall v m. (Serialize v, MonadIO m, MonadConc m) => RaftSocketT v m ()
- newSock :: HostName -> ServiceName -> IO Socket
Documentation
data NodeSocketEnv v Source #
NodeSocketEnv | |
|
Instances
Monad m => MonadReader (NodeSocketEnv v) (RaftSocketT v m) Source # | |
Defined in Examples.Raft.Socket.Node ask :: RaftSocketT v m (NodeSocketEnv v) # local :: (NodeSocketEnv v -> NodeSocketEnv v) -> RaftSocketT v m a -> RaftSocketT v m a # reader :: (NodeSocketEnv v -> a) -> RaftSocketT v m a # |
newtype RaftSocketT v m a Source #
RaftSocketT | |
|
Instances
retryConnection :: (Serialize v, MonadIO m, MonadConc m) => TVar (STM m) (Map NodeId Socket) -> NodeId -> Maybe Socket -> RPCMessage v -> SomeException -> m (Maybe Socket) Source #
Handles connections failures by first trying to reconnect
handleFailure :: (MonadIO m, MonadConc m) => TVar (STM m) (Map NodeId Socket) -> [NodeId] -> Maybe Socket -> SomeException -> m (Maybe Socket) Source #
runRaftSocketT :: (MonadIO m, MonadConc m) => NodeSocketEnv v -> RaftSocketT v m a -> m a Source #
acceptForkNode :: forall v m. (Serialize v, MonadIO m, MonadConc m) => RaftSocketT v m () Source #
Recursively accept a connection. It keeps trying to accept connections even when a node dies