Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Documentation
class (Typeable s, Storable s, Typeable (ServiceState s), Typeable (ServiceGlobalState s)) => Service s where Source #
type ServiceAttributes s = attr | attr -> s Source #
type ServiceAttributes s = Proxy s
type ServiceState s :: Type Source #
type ServiceState s = ()
type ServiceGlobalState s :: Type Source #
type ServiceGlobalState s = ()
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 #
Instances
data SomeService Source #
forall s.Service s => SomeService (Proxy s) (ServiceAttributes s) |
someService :: forall s proxy. Service s => proxy s -> SomeService Source #
someServiceAttr :: forall s. Service s => ServiceAttributes s -> SomeService Source #
someServiceID :: SomeService -> ServiceID Source #
data SomeServiceState Source #
forall s.Service s => SomeServiceState (Proxy s) (ServiceState s) |
fromServiceState :: Service s => proxy s -> SomeServiceState -> Maybe (ServiceState s) Source #
data SomeServiceGlobalState Source #
forall s.Service s => SomeServiceGlobalState (Proxy s) (ServiceGlobalState s) |
fromServiceGlobalState :: Service s => proxy s -> SomeServiceGlobalState -> Maybe (ServiceGlobalState s) Source #
data SomeStorageWatcher s Source #
forall a.Eq a => SomeStorageWatcher (Stored LocalState -> a) (a -> ServiceHandler s ()) |
mkServiceID :: String -> ServiceID Source #
data ServiceHandler s a Source #
Instances
data ServiceInput s Source #
ServiceInput | |
|
Instances
MonadReader (ServiceInput s) (ServiceHandler s) Source # | |
Defined in Erebos.Service 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 #
ServiceReply (Either s (Stored s)) Bool | |
ServiceFinally (IO ()) |
Instances
MonadWriter [ServiceReply s] (ServiceHandler s) Source # | |
Defined in Erebos.Service 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 #