call method

Uint8List call(
  1. String name,
  2. Uint8List payload
)

Implementation

Uint8List call(String name, Uint8List payload) {
  if (_bridgeCall == null) {
    throw OpenPGPException(
        "FFI function ${_callFuncName} is not initialized. Check library loading.");
  }

  final namePointer = name.toNativeUtf8();
  final payloadPointer = malloc.allocate<Uint8>(payload.length);
  payloadPointer.asTypedList(payload.length).setAll(0, payload);

  final result =
      _bridgeCall(namePointer, payloadPointer.cast<Void>(), payload.length);
  if (result.address == 0) {
    throw OpenPGPException(
        "FFI function ${_callFuncName} returned null pointer. Check openpgp-mobile implementation.");
  }

  malloc.free(namePointer);
  malloc.free(payloadPointer);

  handleError(result.ref.errorMessage, result);
  final output = result.ref.toUint8List();
  freeResult(result);

  return output;
}