From 55cc8fe0f58bd221324e658bdb6710c81bcc5dd1 Mon Sep 17 00:00:00 2001 From: Dean Eigenmann Date: Sat, 13 Jul 2019 23:18:00 -0400 Subject: [PATCH] enhancement/message-request (#57) --- node/node.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/node/node.go b/node/node.go index 708f895..cf0eb8c 100644 --- a/node/node.go +++ b/node/node.go @@ -154,6 +154,26 @@ func (n *Node) AppendMessage(group state.GroupID, data []byte) (state.MessageID, return id, nil } +// RequestMessage adds a REQUEST record to the next payload for a given message ID. +func (n *Node) RequestMessage(group state.GroupID, id state.MessageID) error { + peers, ok := n.peers[group] + if !ok { + return fmt.Errorf("trying to request from an unknown group %x", group[:4]) + } + + go func() { + for _, p := range peers { + if !n.IsPeerInGroup(group, p) { + continue + } + + n.insertSyncState(group, id, p, state.REQUEST) + } + }() + + return nil +} + // AddPeer adds a peer to a specific group making it a recipient of messages. func (n *Node) AddPeer(group state.GroupID, id state.PeerID) { if _, ok := n.peers[group]; !ok {