deserializePPT method
Converts a uint8 data into a PPT Payload Object
Implementation
@override
PPTPayload? deserializePPT(Uint8List binPayload) {
List<dynamic>? arguments;
Map<String, dynamic>? argumentsKeywords;
_validateCompleteMsgPackValue(binPayload);
Object? decodedObject = msgpack_dart.deserialize(binPayload);
if (decodedObject is Map) {
if (decodedObject['args'] != null && decodedObject['args'] is List) {
arguments = decodedObject['args'] as List<dynamic>?;
}
if (decodedObject['kwargs'] != null && decodedObject['kwargs'] is Map) {
final keywords = decodedObject['kwargs'] as Map<dynamic, dynamic>;
if (keywords.keys.any((key) => key is! String)) {
throw const FormatException(
'MessagePack PPT keyword arguments must use string keys',
);
}
argumentsKeywords = Map.castFrom<dynamic, dynamic, String, dynamic>(
keywords,
);
}
return PPTPayload(
arguments: arguments,
argumentsKeywords: argumentsKeywords,
);
}
_logger.shout(
'Could not deserialize MessagePack PPT payload '
'(${binPayload.length} bytes)',
);
// TODO respond with an error
return null;
}