parseEntries method
Implementation
Iterable<MetadataEntry> parseEntries() sync* {
while (buffer.isReadable()) {
var metadataTypeOrLength = buffer.readI8();
if (metadataTypeOrLength != null) {
if ((metadataTypeOrLength >= 0x80)) {
var typeId = metadataTypeOrLength - 0x80;
var mimeType = WellKnownMimeType.getMimeType(typeId);
var dataLength = buffer.readI24();
if (dataLength != null) {
var content = buffer.readUint8List(dataLength);
if (content.isNotEmpty) {
yield MetadataEntry.fromContent(content, mimeType, typeId);
}
}
} else {
var mimeTypeU8Array = buffer.readBytes(metadataTypeOrLength);
if (mimeTypeU8Array.isNotEmpty) {
var dataLength = buffer.readI24();
if (dataLength != null) {
var content = buffer.readUint8List(dataLength);
if (content.isNotEmpty) {
var mimeType = utf8.decode(mimeTypeU8Array);
yield MetadataEntry.fromContent(content, mimeType);
}
}
}
}
}
}
}