askarSessionUpdateKey function

Future<AskarCallbackResult> askarSessionUpdateKey(
  1. SessionHandle handle,
  2. String name, {
  3. String? metadata,
  4. Map<String, dynamic>? tags,
  5. int? expiryMs,
})

Implementation

Future<AskarCallbackResult> askarSessionUpdateKey(
  SessionHandle handle,
  String name, {
  String? metadata,
  Map<String, dynamic>? tags,
  int? expiryMs,
}) async {
  Pointer<Utf8> namePointer = nullptr;
  Pointer<Utf8> metadataPointer = nullptr;
  Pointer<Utf8> tagsPointer = nullptr;

  try {
    namePointer = name.toNativeUtf8();

    metadataPointer = (metadata ?? "").toNativeUtf8();
    tagsPointer = jsonEncode(tags ?? {}).toNativeUtf8();

    final callback = newCallbackWithoutHandle();

    final result = nativeAskarSessionUpdateKey(
      handle.toInt(),
      namePointer,
      metadataPointer,
      tagsPointer,
      (expiryMs ?? 0),
      callback.nativeCallable.nativeFunction,
      callback.id,
    );

    return await callback.handleResult(result);
  } finally {
    freePointer(namePointer);
    freePointer(metadataPointer);
    freePointer(tagsPointer);
  }
}