better comments
This commit is contained in:
parent
e714e0f67a
commit
00f48ac407
1 changed files with 8 additions and 2 deletions
10
P2P/IO.hs
10
P2P/IO.hs
|
@ -32,6 +32,7 @@ import Control.Concurrent.Async
|
||||||
import qualified Data.ByteString as B
|
import qualified Data.ByteString as B
|
||||||
import qualified Data.ByteString.Lazy as L
|
import qualified Data.ByteString.Lazy as L
|
||||||
|
|
||||||
|
-- Type of interpreters of the Proto free monad.
|
||||||
type RunProto = forall a m. (MonadIO m, MonadMask m) => Proto a -> m (Maybe a)
|
type RunProto = forall a m. (MonadIO m, MonadMask m) => Proto a -> m (Maybe a)
|
||||||
|
|
||||||
data RunEnv = RunEnv
|
data RunEnv = RunEnv
|
||||||
|
@ -41,8 +42,10 @@ data RunEnv = RunEnv
|
||||||
, runOhdl :: Handle
|
, runOhdl :: Handle
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Implementation of the protocol, communicating with a peer
|
-- Interpreter of Proto that communicates with a peer over a Handle.
|
||||||
-- over a Handle. No Local actions will be run.
|
--
|
||||||
|
-- No Local actions will be run; if the interpreter reaches any,
|
||||||
|
-- it returns Nothing.
|
||||||
runNetProtoHandle :: (MonadIO m, MonadMask m) => RunEnv -> Proto a -> m (Maybe a)
|
runNetProtoHandle :: (MonadIO m, MonadMask m) => RunEnv -> Proto a -> m (Maybe a)
|
||||||
runNetProtoHandle runenv = go
|
runNetProtoHandle runenv = go
|
||||||
where
|
where
|
||||||
|
@ -51,6 +54,9 @@ runNetProtoHandle runenv = go
|
||||||
go (Free (Net n)) = runNetHandle runenv go n
|
go (Free (Net n)) = runNetHandle runenv go n
|
||||||
go (Free (Local _)) = return Nothing
|
go (Free (Local _)) = return Nothing
|
||||||
|
|
||||||
|
-- Interprater of Net that communicates with a peer over a Handle.
|
||||||
|
--
|
||||||
|
-- An interpreter for Proto has to be provided.
|
||||||
runNetHandle :: (MonadIO m, MonadMask m) => RunEnv -> RunProto -> NetF (Proto a) -> m (Maybe a)
|
runNetHandle :: (MonadIO m, MonadMask m) => RunEnv -> RunProto -> NetF (Proto a) -> m (Maybe a)
|
||||||
runNetHandle runenv runner f = case f of
|
runNetHandle runenv runner f = case f of
|
||||||
SendMessage m next -> do
|
SendMessage m next -> do
|
||||||
|
|
Loading…
Reference in a new issue