registerModelForDevice method

ModelInfo? registerModelForDevice(
  1. RegisterModelFromUrlRequest request
)

Implementation

ModelInfo? registerModelForDevice(RegisterModelFromUrlRequest request) {
  final fn = _catalogRegisterModelProto;
  if (fn == null) {
    throw StateError(
      'rac_qhexrt_catalog_register_model_proto is unavailable',
    );
  }

  final requestBytes = QhexrtCatalogWire.encodeRequest(request);
  final requestPtr = DartBridgeProtoUtils.copyBytes(requestBytes);
  final registered = calloc<Int32>();
  final out = calloc<RacProtoBuffer>();

  try {
    RacNative.bindings.rac_proto_buffer_init(out);
    final code = fn(requestPtr, requestBytes.length, registered, out);
    DartBridgeProtoUtils.ensureSuccess(
      out,
      code,
      'rac_qhexrt_catalog_register_model_proto',
    );
    if (registered.value != RAC_TRUE) return null;
    if (out.ref.data == nullptr || out.ref.size == 0) {
      throw StateError(
        'QHexRT registration returned an empty ModelInfo payload',
      );
    }
    return DartBridgeProtoUtils.decodeBuffer<ModelInfo>(
      out,
      ModelInfo.fromBuffer,
    );
  } finally {
    RacNative.bindings.rac_proto_buffer_free(out);
    calloc.free(requestPtr);
    calloc.free(registered);
    calloc.free(out);
  }
}