askarSessionInsertKey function

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

Implementation

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

  try {
    namePointer = name.toNativeUtf8();
    metadataPointer = (metadata ?? "").toNativeUtf8();
    tagsJsonPointer = jsonEncode(tags ?? {}).toNativeUtf8();

    final callback = newCallbackWithoutHandle();

    final result = nativeAskarSessionInsertKey(
      handle.toInt(),
      localKeyHandle.toInt(),
      namePointer,
      metadataPointer,
      tagsJsonPointer,
      (expiryMs ?? 0),
      callback.nativeCallable.nativeFunction,
      callback.id,
    );

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