decodeRetrieveResponse static method
Decode retrieve messages response
Implementation
static RetrieveMessagesResponse decodeRetrieveResponse(Uint8List bytes) {
final data = ByteData.sublistView(bytes);
int offset = 0;
// Read metadata
final metadataLength = data.getUint32(offset);
offset += 4;
final metadataBytes = bytes.sublist(offset, offset + metadataLength);
final json = utf8.decode(metadataBytes);
final metadata = jsonDecode(json) as Map<String, dynamic>;
offset += metadataLength;
final hasMore = metadata['hasMore'] as bool;
final messageCount = metadata['messageCount'] as int;
// Read message frames
final messages = <SFMessage>[];
for (int i = 0; i < messageCount; i++) {
final msgLength = data.getUint32(offset);
offset += 4;
final msgBytes = bytes.sublist(offset, offset + msgLength);
messages.add(decode(msgBytes));
offset += msgLength;
}
return RetrieveMessagesResponse(
messages: messages,
hasMore: hasMore,
);
}