dispose method

  1. @override
void dispose()
override

Disposes of all resources held by this instance

Implementation

@override
void dispose() {
  eventEmitter.clear();
  if (_isInIsolate == false) {
    send(LlamaLibraryActionType.close);
    return;
  }

  if (isDeviceSupport() == false || isCrash()) {
    return;
  }
  clear();

  // if (_tokens != nullptr) {
  //   malloc.free(_tokens);
  // }
  // if (_tokenPtr != nullptr) {
  //   malloc.free(_tokenPtr);
  // }

  if (LlamaLibrary._llamaSampler != nullptr) {
    LlamaLibrary._llamaLibrarySharedBindingsByGeneralDeveloper
        .llama_sampler_free(LlamaLibrary._llamaSampler);
  }
  if (LlamaLibrary._llamaContext != nullptr ||
      LlamaLibrary._llamaContext.address != 0) {
    LlamaLibrary._llamaLibrarySharedBindingsByGeneralDeveloper
        .llama_free(LlamaLibrary._llamaContext);
  }
  if (LlamaLibrary._modelContext != nullptr ||
      LlamaLibrary._modelContext.address != 0) {
    LlamaLibrary._llamaLibrarySharedBindingsByGeneralDeveloper
        .llama_free_model(LlamaLibrary._modelContext);
  }

  LlamaLibrary._llamaLibrarySharedBindingsByGeneralDeveloper
      .llama_backend_free();

  send(LlamaLibraryActionType.close);
}