ModeratorCapsule.fromBinary constructor
ModeratorCapsule.fromBinary(
- Uint8List data
Implementation
factory ModeratorCapsule.fromBinary(Uint8List data) {
var bdata = new ByteData.view(data.buffer);
data.buffer.asUint8List().toList();
int dataLength = bdata.getUint32(0);
if (dataLength != data.lengthInBytes) {
return ModeratorCapsule(
Uint8List(0), Uint8List(0), Uint8List(0), Uint8List(0), Uint8List(0));
}
var wi = 6; //skipping tangloid
Uint8List _tangle = Uint8List(0); //MUST have key to talk to moderator
Uint8List _katamari =
Uint8List(dataLength); //currently OPTIONAL key for your requests
Uint8List _threadEntries =
Uint8List(10065536); //single thread entries with keys
Uint8List _groupEntries =
Uint8List(10065536); //single group entries with keys
Uint8List _xxWants = Uint8List(8089); //single group entries with keys
Uint8List _xxData =
Uint8List(data.buffer.lengthInBytes); //single group entries with keys
//tangle is a must
/*int tadataLength = 0;
if (bdata.getInt8(wi) == capsuleFieldType.empty) {
wi++;
} else {
wi++;
tadataLength = bdata.getInt16(wi);
wi = wi + 2;
for (int i = 0; i < tadataLength; i++) {
_tangle.add(data[wi + i]);
}
}*/
//katamari
print(bdata.lengthInBytes.toString());
int kdataLength = 0;
if (bdata.getUint8(wi) == capsuleFieldType.empty.index) {
wi++;
} else {
wi++;
kdataLength = bdata.getUint16(wi);
wi = wi + 2;
var moo = wi + kdataLength;
//print(moo);
//print(bdata.lengthInBytes);
try {
for (int i = 0; i < kdataLength; i++) {
//_katamari.add(data[wi + i]);
_katamari[i] = bdata.getUint8(wi + i);
}
} catch (e) {
print('missing byte');
print(moo);
print(bdata.lengthInBytes);
}
wi += kdataLength;
}
//threads 5
var tdataLength = 0;
if (bdata.getUint8(wi) == capsuleFieldType.empty.index) {
wi++;
} else {
wi++;
tdataLength = bdata.getUint16(wi);
if (tdataLength > bdata.lengthInBytes) {
print('trap');
}
if (tdataLength > _threadEntries.lengthInBytes) {
print('trap');
}
wi = wi + 2;
for (int i = 0; i < tdataLength; i++) {
_threadEntries[i] = bdata.getUint8(wi + i);
//_threadEntries.add(data[wi + i]);
}
wi += tdataLength;
}
//groups 6
if (bdata.getUint8(wi) == capsuleFieldType.empty.index) {
wi++;
} else {
wi++;
int xdataLength = bdata.getUint16(wi);
wi = wi + 2;
for (int i = 0; i < xdataLength; i++) {
_groupEntries[i] = bdata.getUint8(wi + i);
}
wi += xdataLength;
}
//XXWANTS 7
int xwdataLength = 0;
if (wi + 8 > bdata.lengthInBytes) {
return ModeratorCapsule(
kdataLength != 0 ? _katamari.sublist(0, kdataLength) : Uint8List(0),
_threadEntries.sublist(0, tdataLength),
Uint8List(0),
Uint8List(0),
Uint8List(0));
}
if (bdata.getUint8(wi) == capsuleFieldType.empty.index) {
wi++;
} else {
wi++;
xwdataLength = bdata.getUint16(wi);
wi = wi + 2;
for (int i = 0; i < xwdataLength; i++) {
_xxWants[i] = bdata.getUint8(wi + i);
}
wi += xwdataLength;
}
int xdataLength = 0;
if (bdata.getUint8(wi) == capsuleFieldType.empty.index) {
wi++;
} else {
wi++;
xdataLength = bdata.getUint32(wi);
wi = wi + 4;
for (int i = 0; i < xdataLength; i++) {
_xxData[i] = bdata.getUint8(wi + i);
}
wi += xdataLength;
}
return ModeratorCapsule(
kdataLength != 0 ? _katamari.sublist(0, kdataLength) : Uint8List(0),
_threadEntries.sublist(0, tdataLength),
Uint8List(0),
_xxWants.sublist(0, xwdataLength),
_xxData.sublist(0, xdataLength));
}