diff --git a/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go b/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go index 56013c99d24394ab267f043024a9efcd26563e18..8682758ab476d513d5bc333b082c0d2109a0bfd1 100644 --- a/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go +++ b/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go @@ -58,6 +58,15 @@ func (payload *Payload) DistributedPK() []byte { return payload.dpk } +// Parse is a wrapper for simplified unmarshaling in a byte stream using the marshalUtil package. +func Parse(marshalUtil *marshalutil.MarshalUtil) (*Payload, error) { + if payload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) }); err != nil { + return &Payload{}, err + } else { + return payload.(*Payload), nil + } +} + // FromBytes parses the marshaled version of a Payload into an object. // It either returns a new Payload or fills an optionally provided Payload with the parsed information. func FromBytes(bytes []byte, optionalTargetObject ...*Payload) (result *Payload, err error, consumedBytes int) { diff --git a/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go b/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go index aaf92bf39ede92656814977e47ee12d92bf98f9f..8bcb69a2cfb53d9172af09c6961578640dc554ea 100644 --- a/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go +++ b/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go @@ -18,15 +18,13 @@ func TestParse(t *testing.T) { bytes := payload.Bytes() marshalUtil := marshalutil.New(bytes) - parsedpayload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) }) + parsedPayload, err := Parse(marshalUtil) require.NoError(t, err) - cb := parsedpayload.(*Payload) - - require.Equal(t, payload.SubType(), cb.SubType()) - require.Equal(t, payload.Instance(), cb.Instance()) - require.Equal(t, payload.Round(), cb.Round()) - require.Equal(t, payload.PrevSignature(), cb.PrevSignature()) - require.Equal(t, payload.Signature(), cb.Signature()) - require.Equal(t, payload.DistributedPK(), cb.DistributedPK()) + require.Equal(t, payload.SubType(), parsedPayload.SubType()) + require.Equal(t, payload.Instance(), parsedPayload.Instance()) + require.Equal(t, payload.Round(), parsedPayload.Round()) + require.Equal(t, payload.PrevSignature(), parsedPayload.PrevSignature()) + require.Equal(t, payload.Signature(), parsedPayload.Signature()) + require.Equal(t, payload.DistributedPK(), parsedPayload.DistributedPK()) } diff --git a/packages/binary/drng/payload/payload.go b/packages/binary/drng/payload/payload.go index 9637cbcba98b222c302bacdf548ec539ffee1520..aaf75527b7e618587d84e756baaaa5851bfd6434 100644 --- a/packages/binary/drng/payload/payload.go +++ b/packages/binary/drng/payload/payload.go @@ -36,6 +36,15 @@ func (payload *Payload) Data() []byte { return payload.data } +// Parse is a wrapper for simplified unmarshaling in a byte stream using the marshalUtil package. +func Parse(marshalUtil *marshalutil.MarshalUtil) (*Payload, error) { + if payload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) }); err != nil { + return &Payload{}, err + } else { + return payload.(*Payload), nil + } +} + // FromBytes parses the marshaled version of a Payload into an object. // It either returns a new Payload or fills an optionally provided Payload with the parsed information. func FromBytes(bytes []byte, optionalTargetObject ...*Payload) (result *Payload, err error, consumedBytes int) { diff --git a/packages/binary/drng/payload/payload_test.go b/packages/binary/drng/payload/payload_test.go index 16aa567b99b065d3dc9f1f335c9751e30f6e7f43..ad811340cc599fad00094e4e8bcd103cd23bc610 100644 --- a/packages/binary/drng/payload/payload_test.go +++ b/packages/binary/drng/payload/payload_test.go @@ -15,12 +15,10 @@ func TestParse(t *testing.T) { bytes := payload.Bytes() marshalUtil := marshalutil.New(bytes) - parsedpayload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) }) + parsedPayload, err := Parse(marshalUtil) require.NoError(t, err) - cb := parsedpayload.(*Payload) - - require.Equal(t, payload.SubType(), cb.SubType()) - require.Equal(t, payload.Instance(), cb.Instance()) - require.Equal(t, payload.Data(), cb.Data()) + require.Equal(t, payload.SubType(), parsedPayload.SubType()) + require.Equal(t, payload.Instance(), parsedPayload.Instance()) + require.Equal(t, payload.Data(), parsedPayload.Data()) }