BinaryDataPacket constructor
Implementation
BinaryDataPacket(Buffer buffer, List<Field> fieldPackets) {
buffer.skip(1);
var nulls =
buffer.readList(((fieldPackets.length + 7 + 2) / 8).floor().toInt());
log.fine('Nulls: $nulls');
var shift = 2;
var byte = 0;
var nullMap = List<bool>.generate(fieldPackets.length, (index) {
var mask = 1 << shift;
final value = (nulls[byte] & mask) != 0;
shift++;
if (shift > 7) {
shift = 0;
byte++;
}
return value;
});
values = List<dynamic>.filled(fieldPackets.length, null);
for (var i = 0; i < fieldPackets.length; i++) {
log.fine('$i: ${fieldPackets[i].name}');
if (nullMap[i]) {
log.fine('Value: null');
values![i] = null;
continue;
}
var field = fieldPackets[i];
values![i] = readField(field, buffer);
fields[field.name!] = values![i];
}
}