From 3dcf1f19982210cf9ebc02c80049cc10d784d5cc Mon Sep 17 00:00:00 2001 From: Leo Date: Sat, 7 Aug 2021 21:48:41 +0200 Subject: [PATCH] node/pkg/common: add GetAll accessor for GuardianSetState Change-Id: I7ce71d356f9fc83cc751e98835cbae070deb8640 --- bridge/pkg/common/guardianset.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/bridge/pkg/common/guardianset.go b/bridge/pkg/common/guardianset.go index ed08ece99..76a1fa7db 100644 --- a/bridge/pkg/common/guardianset.go +++ b/bridge/pkg/common/guardianset.go @@ -3,6 +3,7 @@ package common import ( gossipv1 "github.com/certusone/wormhole/bridge/pkg/proto/gossip/v1" "github.com/ethereum/go-ethereum/common" + "google.golang.org/protobuf/proto" "sync" ) @@ -87,3 +88,18 @@ func (st *GuardianSetState) SetHeartBeat(addr common.Address, hb *gossipv1.Heart defer st.mu.Unlock() st.lastHeartbeat[addr] = hb } + +// GetAll returns all stored heartbeats. +func (st *GuardianSetState) GetAll() map[common.Address]*gossipv1.Heartbeat { + st.mu.Lock() + defer st.mu.Unlock() + + ret := make(map[common.Address]*gossipv1.Heartbeat) + + // Deep copy + for k, v := range st.lastHeartbeat { + ret[k] = proto.Clone(v).(*gossipv1.Heartbeat) + } + + return ret +}