From 539e1e8c11586dda440fb991c20824c2989aa02d Mon Sep 17 00:00:00 2001 From: Manoranjith Date: Thu, 13 Jan 2022 23:29:14 +0530 Subject: [PATCH] channel: Use marshal instead of encoding - For converting data to/from binary form, in order to make a deep copy of it. Signed-off-by: Manoranjith --- channel/actionmachine.go | 8 +++----- channel/params.go | 9 ++++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/channel/actionmachine.go b/channel/actionmachine.go index dde35716..6507e5ee 100644 --- a/channel/actionmachine.go +++ b/channel/actionmachine.go @@ -15,13 +15,11 @@ package channel import ( - "bytes" "log" "github.com/pkg/errors" "perun.network/go-perun/wallet" - "perun.network/go-perun/wire/perunio" ) // An ActionMachine is the channel pushdown automaton around an ActionApp. @@ -128,12 +126,12 @@ func (m *ActionMachine) Clone() *ActionMachine { clonedActions := make([]Action, m.N()) for i, action := range m.stagingActions { if action != nil { - var buff bytes.Buffer - if err := perunio.Encode(&buff, action); err != nil { + marshalledAction, err := action.MarshalBinary() + if err != nil { log.Panicf("Could not encode action: %v", err) } clonedAction := m.app.NewAction() - if err := perunio.Decode(&buff, clonedAction); err != nil { + if err := clonedAction.UnmarshalBinary(marshalledAction); err != nil { log.Panicf("App could not decode Action: %v", err) } clonedActions[i] = clonedAction diff --git a/channel/params.go b/channel/params.go index ea0e9fb3..015c8847 100644 --- a/channel/params.go +++ b/channel/params.go @@ -15,7 +15,6 @@ package channel import ( - "bytes" stdio "io" "math/big" @@ -148,14 +147,14 @@ func NewParamsUnsafe(challengeDuration uint64, parts []wallet.Address, app App, // Clone returns a deep copy of Params. func (p *Params) Clone() *Params { clonedParts := make([]wallet.Address, len(p.Parts)) - for i, v := range p.Parts { - var buff bytes.Buffer - if err := perunio.Encode(&buff, v); err != nil { + for i, part := range p.Parts { + marshalledAddr, err := part.MarshalBinary() + if err != nil { log.WithError(err).Panic("Could not encode part") } addr := wallet.NewAddress() - if err := perunio.Decode(&buff, addr); err != nil { + if err := addr.UnmarshalBinary(marshalledAddr); err != nil { log.WithError(err).Panic("Could not clone params' addresses") } clonedParts[i] = addr