mirror of https://github.com/voidlizard/hbs2
lwwref content download
This commit is contained in:
parent
6ebd09e596
commit
6d348cfd50
|
@ -1004,6 +1004,10 @@ runPeer opts = Exception.handle (\e -> myException e
|
||||||
err $ red "Exception" <+> "in thread" <+> pretty t <+> viaShow e
|
err $ red "Exception" <+> "in thread" <+> pretty t <+> viaShow e
|
||||||
liftIO $ throwTo myself GoAgainException
|
liftIO $ throwTo myself GoAgainException
|
||||||
|
|
||||||
|
|
||||||
|
let lwwRefProtoA = lwwRefProto (LWWRefProtoAdapter { lwwFetchBlock = download })
|
||||||
|
where download h = withPeerM env $ withDownload denv (addDownload Nothing h)
|
||||||
|
|
||||||
flip runContT pure do
|
flip runContT pure do
|
||||||
|
|
||||||
peerThread "local multicast" $ forever $ do
|
peerThread "local multicast" $ forever $ do
|
||||||
|
@ -1054,7 +1058,7 @@ runPeer opts = Exception.handle (\e -> myException e
|
||||||
, makeResponse (refChanRequestProto False refChanAdapter)
|
, makeResponse (refChanRequestProto False refChanAdapter)
|
||||||
, makeResponse (refChanNotifyProto False refChanAdapter)
|
, makeResponse (refChanNotifyProto False refChanAdapter)
|
||||||
-- TODO: change-all-to-authorized
|
-- TODO: change-all-to-authorized
|
||||||
, makeResponse ((authorized . subscribed (SomeBrains brains)) lwwRefProto)
|
, makeResponse ((authorized . subscribed (SomeBrains brains)) lwwRefProtoA)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -63,12 +63,14 @@ instance LWWRefContext m => HandleMethod m RpcLWWRefUpdate where
|
||||||
|
|
||||||
let penv = rpcPeerEnv co
|
let penv = rpcPeerEnv co
|
||||||
|
|
||||||
|
let nada = LWWRefProtoAdapter dontHandle
|
||||||
|
|
||||||
void $ runMaybeT do
|
void $ runMaybeT do
|
||||||
(puk, _) <- unboxSignedBox0 box & toMPlus
|
(puk, _) <- unboxSignedBox0 box & toMPlus
|
||||||
|
|
||||||
liftIO $ withPeerM penv do
|
liftIO $ withPeerM penv do
|
||||||
me <- ownPeer @L4Proto
|
me <- ownPeer @L4Proto
|
||||||
runResponseM me $ do
|
runResponseM me $ do
|
||||||
lwwRefProto (LWWRefProto1 (LWWProtoSet @L4Proto (LWWRefKey puk) box))
|
lwwRefProto nada (LWWRefProto1 (LWWProtoSet @L4Proto (LWWRefKey puk) box))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,12 @@ import Data.Maybe
|
||||||
|
|
||||||
{- HLINT ignore "Functor law" -}
|
{- HLINT ignore "Functor law" -}
|
||||||
|
|
||||||
|
|
||||||
|
data LWWRefProtoAdapter e m =
|
||||||
|
LWWRefProtoAdapter
|
||||||
|
{ lwwFetchBlock :: Hash HbSync -> m ()
|
||||||
|
}
|
||||||
|
|
||||||
lwwRefProto :: forall e s m proto . ( MonadIO m
|
lwwRefProto :: forall e s m proto . ( MonadIO m
|
||||||
, ForLWWRefProto e
|
, ForLWWRefProto e
|
||||||
, Request e proto m
|
, Request e proto m
|
||||||
|
@ -43,9 +49,10 @@ lwwRefProto :: forall e s m proto . ( MonadIO m
|
||||||
, s ~ Encryption e
|
, s ~ Encryption e
|
||||||
, proto ~ LWWRefProto e
|
, proto ~ LWWRefProto e
|
||||||
)
|
)
|
||||||
=> LWWRefProto e -> m ()
|
=> LWWRefProtoAdapter e m
|
||||||
|
-> LWWRefProto e -> m ()
|
||||||
|
|
||||||
lwwRefProto pkt@(LWWRefProto1 req) = do
|
lwwRefProto adapter pkt@(LWWRefProto1 req) = do
|
||||||
debug $ yellow "lwwRefProto"
|
debug $ yellow "lwwRefProto"
|
||||||
|
|
||||||
case req of
|
case req of
|
||||||
|
@ -79,9 +86,11 @@ lwwRefProto pkt@(LWWRefProto1 req) = do
|
||||||
when new do
|
when new do
|
||||||
lift $ gossip pkt
|
lift $ gossip pkt
|
||||||
|
|
||||||
|
lift $ lwwFetchBlock adapter (fromHashRef (lwwValue lww))
|
||||||
|
|
||||||
getRef sto key >>= \case
|
getRef sto key >>= \case
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
h <- putBlock sto bs >>= toMPlus
|
h <- enqueueBlock sto bs >>= toMPlus
|
||||||
updateRef sto key h
|
updateRef sto key h
|
||||||
|
|
||||||
Just rv -> do
|
Just rv -> do
|
||||||
|
@ -98,6 +107,6 @@ lwwRefProto pkt@(LWWRefProto1 req) = do
|
||||||
|
|
||||||
where
|
where
|
||||||
forcedUpdateLwwRef sto key bs = do
|
forcedUpdateLwwRef sto key bs = do
|
||||||
h' <- putBlock sto bs
|
h' <- enqueueBlock sto bs
|
||||||
forM_ h' $ updateRef sto key
|
forM_ h' $ updateRef sto key
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue