requestFramesFromInternet method

Future<void> requestFramesFromInternet(
  1. String host
)

Implementation

Future<void> requestFramesFromInternet(String host) async {
  if (requestingFromInternet) {
    return;
  }

  requestingFromInternet = true;
  Uint8List localAddressBS = addressBSForPublicKey(keyPair.publicKey);
  Uint8List getMessagesRequest = Uint8List(16 + 30);
  getMessagesRequest.buffer.asUint64List(0)[0] = lastReceivedMessageId;
  getMessagesRequest.buffer.asUint64List(8)[0] = 1024 * 1024;
  copyBytes(getMessagesRequest, 16, localAddressBS);

  Uint8List res = Uint8List(0);
  try {
    res = await httpCall(host, "r", getMessagesRequest, 20000);
  } catch (err) {
    print("ex: $err");
  }
  if (res.length >= 8) {
    lastReceivedMessageId = res.buffer.asUint64List(0)[0];
    int offset = 8;
    while (offset < res.length) {
      if (offset + 128 < res.length) {
        var tempBuf = res.sublist(offset);
        int frameLen = tempBuf.buffer.asUint32List(0)[0];
        if (offset + frameLen <= res.length) {
          Uint8List frame = res.sublist(offset, offset + frameLen);
          processFrame(null, host, frame);
        } else {
          break;
        }
        offset += frameLen;
      } else {
        break;
      }
    }
  }
  requestingFromInternet = false;
}