const bin = require('binary-encoder');
const {PROTOCOL_ID} = require('./Constants');
/**
* @file Defines the structure of datagrams exchanged between peers.
* Allows consistent and efficient encoding and decoding of buffers into objects.
*/
const DataPartMessage = bin.Structure({
message_id: bin.Uint32(),
position: bin.Uint32(),
is_last: bin.Optional(bin.Uint8()),
data: bin.Data(),
});
const DataPositionalMessage = bin.Structure({
message_id: bin.Uint32(),
position: bin.Uint32(),
});
const Datagram = bin.Structure({
protocol: bin.Constant(PROTOCOL_ID),
message: bin.OneOf({
data_part: DataPartMessage,
data_resend: DataPositionalMessage,
data_ack: DataPositionalMessage,
}),
});
module.exports = Datagram;