onBytes method

  1. @override
void onBytes(
  1. Uint8Buffer? data,
  2. int size
)
override

Implementation

@override
void onBytes(typed.Uint8Buffer? data, int size) {
  // Check if we are expecting something, ie whats next
  switch (_next) {
    case whatsNext.aPositiveBignum:
      // Convert to a positive integer and append
      final value = bignumToBigInt(data!, '+');
      onBigInteger(value);
      break;
    case whatsNext.aNegativeBignum:
      var value = bignumToBigInt(data!, '-');
      value = BigInt.from(-1) + value!;
      onBigInteger(value.abs());
      break;
    case whatsNext.aMultipleB64Url:
      if (data != null) {
        final item = DartItem();
        item.data = data;
        item.type = dartTypes.dtBuffer;
        item.hint = dataHints.base64Url;
        item.complete = true;
        _append(item);
      }
      break;
    case whatsNext.aMultipleB64:
      if (data != null) {
        final item = DartItem();
        item.data = data;
        item.type = dartTypes.dtBuffer;
        item.hint = dataHints.base64;
        item.complete = true;
        _append(item);
      }
      break;
    case whatsNext.aMultipleB16:
      if (data != null) {
        final item = DartItem();
        item.data = data;
        item.type = dartTypes.dtBuffer;
        item.hint = dataHints.base16;
        item.complete = true;
        _append(item);
      }
      break;
    case whatsNext.encodedCBOR:
      if (data != null) {
        final item = DartItem();
        item.data = data;
        item.type = dartTypes.dtBuffer;
        item.hint = dataHints.encodedCBOR;
        item.complete = true;
        _append(item);
      }
      break;
    case whatsNext.aSelfDescribeCBOR:
      if (data != null) {
        final item = DartItem();
        item.data = data;
        item.type = dartTypes.dtBuffer;
        item.hint = dataHints.selfDescCBOR;
        item.complete = true;
        _append(item);
      }
      break;
    case whatsNext.unassigned:
      if (data != null) {
        final item = DartItem();
        item.data = data;
        item.type = dartTypes.dtBuffer;
        item.complete = true;
        _append(item);
      }
      break;
    case whatsNext.nothing:
    default:
      if (data == null) {
        return;
      }
      if (_waitingIndefBytes()) {
        _byteAssembly.addAll(data);
      } else {
        final item = DartItem();
        item.data = data;
        item.type = dartTypes.dtBuffer;
        item.complete = true;
        _append(item);
      }
  }
  _next = whatsNext.nothing;
}