From 6884bfe33f69f001685d3c15c04557e1f9ec2ffc Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Wed, 10 Apr 2024 06:27:34 +0300 Subject: [PATCH] wip, injected "notifiers" --- .../lib/HBS2/Peer/Proto/RefChan/Types.hs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/hbs2-peer/lib/HBS2/Peer/Proto/RefChan/Types.hs b/hbs2-peer/lib/HBS2/Peer/Proto/RefChan/Types.hs index 1397ef06..e06c9488 100644 --- a/hbs2-peer/lib/HBS2/Peer/Proto/RefChan/Types.hs +++ b/hbs2-peer/lib/HBS2/Peer/Proto/RefChan/Types.hs @@ -63,6 +63,16 @@ data RefChanHeadBlock e = , _refChanHeadReaders' :: HashSet (PubKey 'Encrypt (Encryption e)) , _refChanHeadExt :: ByteString } + | RefChanHeadBlock2 + { _refChanHeadVersion :: Integer + , _refChanHeadQuorum :: Integer + , _refChanHeadWaitAccept :: Integer + , _refChanHeadPeers :: HashMap (PubKey 'Sign (Encryption e)) Weight + , _refChanHeadAuthors :: HashSet (PubKey 'Sign (Encryption e)) + , _refChanHeadReaders' :: HashSet (PubKey 'Encrypt (Encryption e)) + , _refChanHeadNotifiers' :: HashSet (PubKey 'Sign (Encryption e)) + , _refChanHeadExt :: ByteString + } deriving stock (Generic) makeLenses ''RefChanHeadBlock @@ -126,7 +136,25 @@ refChanHeadReaders = lens g s where g (RefChanHeadBlockSmall{}) = mempty g (RefChanHeadBlock1{..}) = _refChanHeadReaders' + g (RefChanHeadBlock2{..}) = _refChanHeadReaders' s v@(RefChanHeadBlock1{}) x = v { _refChanHeadReaders' = x } + s v@(RefChanHeadBlock2{}) x = v { _refChanHeadReaders' = x } + s x _ = x + + +refChanHeadNotifiers :: ForRefChans e + => Lens (RefChanHeadBlock e) + (RefChanHeadBlock e) + (HashSet (PubKey 'Sign (Encryption e))) + (HashSet (PubKey 'Sign (Encryption e))) + +refChanHeadNotifiers = lens g s + where + g (RefChanHeadBlockSmall{}) = mempty + g (RefChanHeadBlock1{}) = mempty + g (RefChanHeadBlock2{..}) = _refChanHeadNotifiers' + + s v@(RefChanHeadBlock2{}) x = v { _refChanHeadNotifiers' = x } s x _ = x instance ForRefChans e => Serialise (RefChanHeadBlock e)