createPipeline method

void createPipeline({
  1. required Pointer<RacRagConfigStruct> config,
})

Create a RAG pipeline from a pre-populated RacRagConfigStruct pointer.

config must be valid for the duration of this call. The caller is responsible for freeing config after this returns.

Implementation

void createPipeline({required Pointer<RacRagConfigStruct> config}) {
  final lib = PlatformLoader.loadCommons();
  final fn = lib.lookupFunction<RacRagPipelineCreateNative,
      RacRagPipelineCreateDart>('rac_rag_pipeline_create');

  final outPipeline = calloc<Pointer<Void>>();
  try {
    final result = fn(config, outPipeline);
    if (result != RAC_SUCCESS || outPipeline.value == nullptr) {
      throw Exception('Failed to create RAG pipeline: error $result');
    }

    if (_pipeline != null) {
      destroy();
    }

    _pipeline = outPipeline.value;
    _logger.debug('RAG pipeline created');
  } finally {
    calloc.free(outPipeline);
  }
}