| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Erebos.Service
Documentation
class (Typeable s, Storable s, Typeable (ServiceAttributes s), Typeable (ServiceState s), Typeable (ServiceGlobalState s)) => Service s where Source #
Minimal complete definition
Associated Types
type ServiceAttributes s = (attr :: Type) | attr -> s Source #
type ServiceAttributes s = Proxy s
type ServiceState s Source #
type ServiceState s = ()
type ServiceGlobalState s Source #
type ServiceGlobalState s = ()
Methods
serviceID :: proxy s -> ServiceID Source #
serviceHandler :: Stored s -> ServiceHandler s () Source #
serviceNewPeer :: ServiceHandler s () Source #
defaultServiceAttributes :: proxy s -> ServiceAttributes s Source #
default defaultServiceAttributes :: ServiceAttributes s ~ Proxy s => proxy s -> ServiceAttributes s Source #
emptyServiceState :: proxy s -> ServiceState s Source #
default emptyServiceState :: ServiceState s ~ () => proxy s -> ServiceState s Source #
emptyServiceGlobalState :: proxy s -> ServiceGlobalState s Source #
default emptyServiceGlobalState :: ServiceGlobalState s ~ () => proxy s -> ServiceGlobalState s Source #
serviceStorageWatchers :: proxy s -> [SomeStorageWatcher s] Source #
serviceStopServer :: proxy s -> Server -> ServiceGlobalState s -> [(Peer, ServiceState s)] -> IO () Source #
Instances
data SomeService Source #
Constructors
| Service s => SomeService (Proxy s) (ServiceAttributes s) |
someService :: Service s => proxy s -> SomeService Source #
someServiceAttr :: Service s => ServiceAttributes s -> SomeService Source #
someServiceID :: SomeService -> ServiceID Source #
data SomeServiceState Source #
Constructors
| Service s => SomeServiceState (Proxy s) (ServiceState s) |
fromServiceState :: Service s => proxy s -> SomeServiceState -> Maybe (ServiceState s) Source #
data SomeServiceGlobalState Source #
Constructors
| Service s => SomeServiceGlobalState (Proxy s) (ServiceGlobalState s) |
fromServiceGlobalState :: Service s => proxy s -> SomeServiceGlobalState -> Maybe (ServiceGlobalState s) Source #
data SomeStorageWatcher s Source #
Constructors
| Eq a => SomeStorageWatcher (Stored LocalState -> a) (a -> ServiceHandler s ()) | |
| Eq a => GlobalStorageWatcher (Stored LocalState -> a) (Server -> a -> ExceptT String IO ()) |
Instances
| Show ServiceID Source # | |
| StorableUUID ServiceID Source # | |
| Eq ServiceID Source # | |
| Ord ServiceID Source # | |
mkServiceID :: String -> ServiceID Source #
data ServiceHandler s a Source #
Instances
| MonadHead LocalState (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods updateLocalHead :: (Stored LocalState -> ServiceHandler s (Stored LocalState, b)) -> ServiceHandler s b Source # getLocalHead :: ServiceHandler s (Stored LocalState) Source # | |
| MonadError String (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods throwError :: String -> ServiceHandler s a # catchError :: ServiceHandler s a -> (String -> ServiceHandler s a) -> ServiceHandler s a # | |
| MonadIO (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods liftIO :: IO a -> ServiceHandler s a # | |
| Applicative (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods pure :: a -> ServiceHandler s a # (<*>) :: ServiceHandler s (a -> b) -> ServiceHandler s a -> ServiceHandler s b # liftA2 :: (a -> b -> c) -> ServiceHandler s a -> ServiceHandler s b -> ServiceHandler s c # (*>) :: ServiceHandler s a -> ServiceHandler s b -> ServiceHandler s b # (<*) :: ServiceHandler s a -> ServiceHandler s b -> ServiceHandler s a # | |
| Functor (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods fmap :: (a -> b) -> ServiceHandler s a -> ServiceHandler s b # (<$) :: a -> ServiceHandler s b -> ServiceHandler s a # | |
| Monad (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods (>>=) :: ServiceHandler s a -> (a -> ServiceHandler s b) -> ServiceHandler s b # (>>) :: ServiceHandler s a -> ServiceHandler s b -> ServiceHandler s b # return :: a -> ServiceHandler s a # | |
| MonadStorage (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods getStorage :: ServiceHandler s Storage Source # mstore :: Storable a => a -> ServiceHandler s (Stored a) Source # | |
| MonadReader (ServiceInput s) (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods ask :: ServiceHandler s (ServiceInput s) # local :: (ServiceInput s -> ServiceInput s) -> ServiceHandler s a -> ServiceHandler s a # reader :: (ServiceInput s -> a) -> ServiceHandler s a # | |
| MonadWriter [ServiceReply s] (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods writer :: (a, [ServiceReply s]) -> ServiceHandler s a # tell :: [ServiceReply s] -> ServiceHandler s () # listen :: ServiceHandler s a -> ServiceHandler s (a, [ServiceReply s]) # pass :: ServiceHandler s (a, [ServiceReply s] -> [ServiceReply s]) -> ServiceHandler s a # | |
data ServiceInput s Source #
Constructors
| ServiceInput | |
Fields
| |
Instances
| MonadReader (ServiceInput s) (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods ask :: ServiceHandler s (ServiceInput s) # local :: (ServiceInput s -> ServiceInput s) -> ServiceHandler s a -> ServiceHandler s a # reader :: (ServiceInput s -> a) -> ServiceHandler s a # | |
data ServiceReply s Source #
Constructors
| ServiceReply (Either s (Stored s)) Bool | |
| ServiceFinally (IO ()) |
Instances
| MonadWriter [ServiceReply s] (ServiceHandler s) Source # | |
Defined in Erebos.Service Methods writer :: (a, [ServiceReply s]) -> ServiceHandler s a # tell :: [ServiceReply s] -> ServiceHandler s () # listen :: ServiceHandler s a -> ServiceHandler s (a, [ServiceReply s]) # pass :: ServiceHandler s (a, [ServiceReply s] -> [ServiceReply s]) -> ServiceHandler s a # | |
runServiceHandler :: Service s => Head LocalState -> ServiceInput s -> ServiceState s -> ServiceGlobalState s -> ServiceHandler s () -> IO ([ServiceReply s], (ServiceState s, ServiceGlobalState s)) Source #
svcGet :: ServiceHandler s (ServiceState s) Source #
svcSet :: ServiceState s -> ServiceHandler s () Source #
svcModify :: (ServiceState s -> ServiceState s) -> ServiceHandler s () Source #
svcGetGlobal :: ServiceHandler s (ServiceGlobalState s) Source #
svcSetGlobal :: ServiceGlobalState s -> ServiceHandler s () Source #
svcModifyGlobal :: (ServiceGlobalState s -> ServiceGlobalState s) -> ServiceHandler s () Source #
svcGetLocal :: ServiceHandler s (Stored LocalState) Source #
svcSetLocal :: Stored LocalState -> ServiceHandler s () Source #
svcPrint :: String -> ServiceHandler s () Source #
replyPacket :: Service s => s -> ServiceHandler s () Source #
replyStored :: Service s => Stored s -> ServiceHandler s () Source #
replyStoredRef :: Service s => Stored s -> ServiceHandler s () Source #
afterCommit :: IO () -> ServiceHandler s () Source #