[#344] netmap: Add method Clone

Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
Anton Nikiforov 2025-03-07 13:59:38 +03:00
parent f70c0c9081
commit 749b4e9ab5
6 changed files with 141 additions and 0 deletions

View file

@ -96,6 +96,21 @@ func (m NetMap) Epoch() uint64 {
return m.epoch
}
// Clone returns a copy of NetMap.
func (m *NetMap) Clone() *NetMap {
if m == nil {
return nil
}
dst := NetMap{
epoch: m.epoch,
nodes: make([]NodeInfo, len(m.nodes)),
}
for i, node := range m.nodes {
dst.nodes[i] = *node.Clone()
}
return &dst
}
// nodes is a slice of NodeInfo instances needed for HRW sorting.
type nodes []NodeInfo