requestFramesFromInternet method
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;
}