ModeratorCapsule.fromBinary constructor

ModeratorCapsule.fromBinary(
  1. Uint8List data
)

Implementation

factory ModeratorCapsule.fromBinary(Uint8List data) {
  var bdata = new ByteData.view(data.buffer);

  int dataLength = bdata.getUint16(0);
  if (data.lengthInBytes != dataLength) {
    return ModeratorCapsule(Uint8List(0), Uint8List(0), Uint8List(0));
  }
  var wi = 2;
  //skip 2 reserved bytes
  wi += 2;
  //Uint8List _tangle = Uint8List(0); //MUST have key to talk to moderator
  Uint8List _katamari =
      Uint8List(dataLength); //currently OPTIONAL key for your requests
  Uint8List _modEntrySet =
      Uint8List(dataLength); //single thread entries with keys
  //Uint8List _groupEntries = Uint8List(0); //single group entries with keys

  //tangle is a must
  /*if (bdata.getInt8(wi) == capsuleFieldType.empty) {
    wi++;
  } else {
    wi++;
    int dataLength = bdata.getInt16(wi);
    wi = wi + 2;
    for (int i = 0; i < dataLength; i++) {
      _tangle.add(data[wi + i]);
    }
  }*/
  //katamari
  int kk = 0;
  if (bdata.getUint8(wi) == capsuleFieldType.empty) {
    wi++;
  } else {
    wi++;
    int kdataLength = bdata.getUint16(wi);
    print('katalen ' + kdataLength.toString());
    wi = wi + 2;
    for (int i = 0; i < kdataLength; i++) {
      _katamari[kk++] = data[wi + i];
    }
    wi += kdataLength;
  }
  int tt = 0;
  if (bdata.getUint8(wi) == capsuleFieldType.empty) {
    wi++;
  } else {
    wi++;
    int mdataLength = bdata.getUint16(wi);
    print('moder ' + mdataLength.toString());
    wi = wi + 2;
    for (int i = 0; i < mdataLength; i++) {
      _modEntrySet[tt++] = data[wi + i];
    }
    wi += mdataLength;
  }
  /*if (bdata.getInt8(wi) == capsuleFieldType.empty) {
    wi++;
  } else {
    wi++;
    int dataLength = bdata.getInt16(wi);
    wi = wi + 2;
    for (int i = 0; i < dataLength; i++) {
      _groupEntries.add(data[wi + i]);
    }
  }*/
  return ModeratorCapsule(
      _katamari.sublist(0, kk), _modEntrySet.sublist(0, tt), Uint8List(0));
}