diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-01-25 10:22:04 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-01-27 19:45:23 +0100 |
| commit | 66bfcd8ad4ef16dcd0e287004dc08f8948589bce (patch) | |
| tree | 337a1658cc4ff76c14254a0d69aafd6c61765a14 /main/Test/Service.hs | |
| parent | 7e0685f049f8981c4f11c3c83caacf85bc855577 (diff) | |
Deferred object loading
Diffstat (limited to 'main/Test/Service.hs')
| -rw-r--r-- | main/Test/Service.hs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/main/Test/Service.hs b/main/Test/Service.hs index c0be07d..156b62c 100644 --- a/main/Test/Service.hs +++ b/main/Test/Service.hs @@ -9,9 +9,12 @@ import Control.Monad import Control.Monad.Reader import Data.ByteString.Lazy.Char8 qualified as BL +import Data.Word +import Erebos.Identity import Erebos.Network import Erebos.Object +import Erebos.Object.Deferred import Erebos.Service import Erebos.Service.Stream import Erebos.Storable @@ -21,6 +24,7 @@ data TestMessage = TestMessage (Stored Object) data TestMessageAttributes = TestMessageAttributes { testMessageReceived :: Object -> String -> String -> String -> ServiceHandler TestMessage () , testStreamsReceived :: [ StreamReader ] -> ServiceHandler TestMessage () + , testOnDemandReceived :: Word64 -> Deferred Object -> ServiceHandler TestMessage () } instance Storable TestMessage where @@ -34,6 +38,7 @@ instance Service TestMessage where defaultServiceAttributes _ = TestMessageAttributes { testMessageReceived = \_ _ _ _ -> return () , testStreamsReceived = \_ -> return () + , testOnDemandReceived = \_ _ -> return () } serviceHandler smsg = do @@ -50,6 +55,14 @@ instance Service TestMessage where cb <- asks $ testStreamsReceived . svcAttributes cb streams + case obj of + OnDemand size dgst -> do + cb <- asks $ testOnDemandReceived . svcAttributes + server <- asks svcServer + pid <- asks svcPeerIdentity + cb size =<< liftIO (deferLoadWithServer dgst server [ refDigest $ storedRef $ idData pid ]) + _ -> return () + openTestStreams :: Int -> ServiceHandler TestMessage [ StreamWriter ] openTestStreams count = do |