// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once #include "onnxruntime_cxx_api.h" #include #include // class InferenceSessionWrap is a N-API object wrapper for native InferenceSession. class InferenceSessionWrap : public Napi::ObjectWrap { public: static Napi::Object Init(Napi::Env env, Napi::Object exports); InferenceSessionWrap(const Napi::CallbackInfo &info); private: /** * [sync] create the session. * @param arg0 either a string (file path) or a Uint8Array * @returns nothing * @throw error if status code != 0 */ Napi::Value LoadModel(const Napi::CallbackInfo &info); // following functions have to be called after model is loaded. /** * [sync] get input names. * @param nothing * @returns a string array. * @throw nothing */ Napi::Value GetInputNames(const Napi::CallbackInfo &info); /** * [sync] get output names. * @param nothing * @returns a string array. * @throw nothing */ Napi::Value GetOutputNames(const Napi::CallbackInfo &info); /** * [sync] run the model. * @param arg0 input object: all keys must present, value is object * @param arg1 output object: at least one key must present, value can be null. * @returns an object that every output specified will present and value must be object * @throw error if status code != 0 */ Napi::Value Run(const Napi::CallbackInfo &info); // private members // persistent constructor static Napi::FunctionReference constructor; // global env static Ort::Env *ortEnv; static Ort::Env &OrtEnv() { return *ortEnv; } // session objects bool initialized_; std::unique_ptr session_; std::unique_ptr defaultRunOptions_; // input/output metadata std::vector inputNames_; std::vector inputTypes_; std::vector inputTensorElementDataTypes_; std::vector outputNames_; std::vector outputTypes_; std::vector outputTensorElementDataTypes_; };