From 177b91f7b3b77e506e176cccd50bc0f3980c570d Mon Sep 17 00:00:00 2001 From: Benjamin Wenger <ben@elixxir.ioo> Date: Mon, 11 Apr 2022 13:51:56 -0700 Subject: [PATCH] added a num request parts field to signle use for forwards compatibility --- single/message/request.go | 27 ++++++++++++++++++++------- single/message/request_test.go | 2 +- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/single/message/request.go b/single/message/request.go index f4397053a..9054aeef1 100644 --- a/single/message/request.go +++ b/single/message/request.go @@ -125,17 +125,18 @@ func (m Request) SetPayload(b []byte) { } const ( - nonceSize = 8 - maxPartsSize = 1 - sizeSize = 2 - transmitPlMinSize = nonceSize + maxPartsSize + sizeSize + nonceSize = 8 + numRequestPartsSize = 1 + maxResponsePartsSize = 1 + sizeSize = 2 + transmitPlMinSize = nonceSize + maxResponsePartsSize + sizeSize ) // RequestPayload is the structure of Request's payload. type RequestPayload struct { data []byte // Serial of all contents e nonce []byte - nunRequestParts []byte + numRequestParts []byte //number fo parts in the request, currently always 1 maxResponseParts []byte // Max number of messages expected in response size []byte // Size of the contents contents []byte @@ -165,10 +166,12 @@ func mapRequestPayload(data []byte) RequestPayload { mp := RequestPayload{ data: data, nonce: data[:nonceSize], - maxResponseParts: data[nonceSize : nonceSize+maxPartsSize], - size: data[nonceSize+maxPartsSize : transmitPlMinSize], + numRequestParts: data[nonceSize : nonceSize+numRequestPartsSize], + maxResponseParts: data[nonceSize+numRequestPartsSize : nonceSize+maxResponsePartsSize+numRequestPartsSize], + size: data[nonceSize+numRequestPartsSize+maxResponsePartsSize : transmitPlMinSize], contents: data[transmitPlMinSize:], } + mp.numRequestParts[0] = 1 return mp } @@ -221,6 +224,16 @@ func (mp RequestPayload) SetMaxResponseParts(num uint8) { copy(mp.maxResponseParts, []byte{num}) } +// GetNumRequestParts returns the number of messages expected in the request. +func (mp RequestPayload) GetNumRequestParts() uint8 { + return mp.numRequestParts[0] +} + +// SetNumRequestParts sets the number of expected messages. +func (mp RequestPayload) SetNumRequestParts(num uint8) { + copy(mp.numRequestParts, []byte{num}) +} + // GetContents returns the payload's contents. func (mp RequestPayload) GetContents() []byte { return mp.contents[:binary.BigEndian.Uint16(mp.size)] diff --git a/single/message/request_test.go b/single/message/request_test.go index 8b5d2f6e6..dc24b689d 100644 --- a/single/message/request_test.go +++ b/single/message/request_test.go @@ -181,7 +181,7 @@ func Test_newTransmitMessagePayload(t *testing.T) { data: make([]byte, payloadSize), tagFP: make([]byte, tagFPSize), nonce: make([]byte, nonceSize), - maxResponseParts: make([]byte, maxPartsSize), + maxResponseParts: make([]byte, maxResponsePartsSize), size: make([]byte, sizeSize), contents: make([]byte, payloadSize-transmitPlMinSize), } -- GitLab