Skip to content
Snippets Groups Projects
Commit 0810956e authored by capossele's avatar capossele
Browse files

:recycle: improves parsing

parent 77b481b7
No related branches found
No related tags found
No related merge requests found
......@@ -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) {
......
......@@ -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())
}
......@@ -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) {
......
......@@ -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())
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment