Portability | GeneralizedNewtypeDeriving, FlexibleInstances, MultiParamTypeClasses, StandaloneDeriving, ScopedTypeVariables |
---|---|
Stability | experimental |
Maintainer | Matthew Mirman <mmirman@andrew.cmu.edu> |
Safe Haskell | None |
A server that allows for the declaration of services and for the calling of services.
- data ServiceID
- data Message
- type Handlers m = Map ServiceID (Handle -> AIO m ())
- type State m = MVar (Handlers m, Integer)
- newtype AIO m a = AIO (ReaderT (State m) m a)
- send :: (Show a, MonadIO m) => Handle -> a -> m ()
- recv :: (Read a, MonadIO m) => Handle -> m a
- startServer :: forall m a. Servable m => Integer -> AIO m a -> m a
- safeFind :: (Ord k, Show k) => Map k a -> k -> a
- getHandlers :: Monad m => AIO m (State m)
- addService :: (Monad m, MonadIO m) => (Handle -> AIO m ()) -> AIO m ServiceID
- addServiceByName :: (Monad m, MonadIO m) => String -> (Handle -> AIO m ()) -> AIO m ServiceID
- connectToService :: MonadIO m => String -> Integer -> ServiceID -> m Handle
- class (Functor m, Monad m, MonadIO m, Forkable m) => Servable m
- track :: Servable m => (String, Integer, ServiceID) -> a -> AIO m a