summaryrefslogtreecommitdiff
path: root/src/Erebos/Service.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Erebos/Service.hs')
-rw-r--r--src/Erebos/Service.hs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/Erebos/Service.hs b/src/Erebos/Service.hs
index 9030d04..303f9db 100644
--- a/src/Erebos/Service.hs
+++ b/src/Erebos/Service.hs
@@ -51,6 +51,9 @@ class (
serviceNewPeer :: ServiceHandler s ()
serviceNewPeer = return ()
+ serviceUpdatedPeer :: ServiceHandler s ()
+ serviceUpdatedPeer = return ()
+
type ServiceAttributes s = attr | attr -> s
type ServiceAttributes s = Proxy s
defaultServiceAttributes :: proxy s -> ServiceAttributes s
@@ -72,6 +75,9 @@ class (
serviceStorageWatchers :: proxy s -> [SomeStorageWatcher s]
serviceStorageWatchers _ = []
+ serviceStopServer :: proxy s -> Server -> ServiceGlobalState s -> [ ( Peer, ServiceState s ) ] -> IO ()
+ serviceStopServer _ _ _ _ = return ()
+
data SomeService = forall s. Service s => SomeService (Proxy s) (ServiceAttributes s)
@@ -101,7 +107,9 @@ someServiceEmptyGlobalState :: SomeService -> SomeServiceGlobalState
someServiceEmptyGlobalState (SomeService p _) = SomeServiceGlobalState p (emptyServiceGlobalState p)
-data SomeStorageWatcher s = forall a. Eq a => SomeStorageWatcher (Stored LocalState -> a) (a -> ServiceHandler s ())
+data SomeStorageWatcher s
+ = forall a. Eq a => SomeStorageWatcher (Stored LocalState -> a) (a -> ServiceHandler s ())
+ | forall a. Eq a => GlobalStorageWatcher (Stored LocalState -> a) (Server -> a -> ExceptT ErebosError IO ())
mkServiceID :: String -> ServiceID
@@ -110,6 +118,7 @@ mkServiceID = maybe (error "Invalid service ID") ServiceID . U.fromString
data ServiceInput s = ServiceInput
{ svcAttributes :: ServiceAttributes s
, svcPeer :: Peer
+ , svcPeerAddress :: PeerAddress
, svcPeerIdentity :: UnifiedIdentity
, svcServer :: Server
, svcPrintOp :: String -> IO ()