diff --git a/single/message/request.go b/single/message/request.go index f4397053ad9ed771c9908611ad422ccd9c4a66a3..9054aeef104c7761f2df7506b39917d66cca02d1 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 8b5d2f6e6e6c1175bf75905fcf79631c8a7cbec3..dc24b689dc6711c41c7f035d349f2ce07f1e26ac 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), }