askarSessionUpdate function

Future<AskarCallbackResult> askarSessionUpdate(
  1. SessionHandle handle,
  2. EntryOperation operation,
  3. String category,
  4. String name, {
  5. String? value,
  6. Map<String, dynamic>? tags,
  7. int? expiryMs,
})

Implementation

Future<AskarCallbackResult> askarSessionUpdate(
  SessionHandle handle,
  EntryOperation operation,
  String category,
  String name, {
  String? value,
  Map<String, dynamic>? tags,
  int? expiryMs,
}) async {
  Pointer<Utf8> categoryPointer = nullptr;
  Pointer<Utf8> namePointer = nullptr;
  Pointer<Utf8> tagsPointer = nullptr;
  Pointer<NativeByteBuffer> byteBufferPointer = nullptr;

  try {
    categoryPointer = category.toNativeUtf8();
    namePointer = name.toNativeUtf8();
    tagsPointer = jsonEncode(tags).toNativeUtf8();
    byteBufferPointer = stringToByteBuffer(value ?? "");

    final callback = newCallbackWithoutHandle();

    final result = nativeAskarSessionUpdate(
      handle.toInt(),
      operation.value,
      categoryPointer,
      namePointer,
      byteBufferPointer.ref,
      tagsPointer,
      (expiryMs ?? 0),
      callback.nativeCallable.nativeFunction,
      callback.id,
    );

    return await callback.handleResult(result);
  } finally {
    freePointer(categoryPointer);
    freePointer(namePointer);
    freePointer(tagsPointer);
    freeByteBufferPointer(byteBufferPointer);
  }
}