decode method

IsoMsg decode(
  1. Uint8List payload
)

Decodes one frame body — the bytes after the length prefix. A rejected message carries its reject code in the header and no ISO body.

Implementation

IsoMsg decode(Uint8List payload) {
  if (payload.length < headerLength) throw const FormatException("frame shorter than the $headerLength byte header");
  final Uint8List header = Uint8List.fromList(payload.sublist(0, headerLength));
  final OssAcqHeader ossHeader = OssAcqHeader.raw(header);

  final IsoMsg message = packager.createComponent()
    ..isoHeader = header
    ..rawBuffer = payload;

  if (ossHeader.isReject) {
    message.rejectCode = ossHeader.rejectCode;
    return message;
  }

  final Uint8List body = Uint8List.fromList(payload.sublist(headerLength));
  if (body.isNotEmpty) packager.unpack(message, IsoBuffer.wrap(body));
  return message;
}