/* * SPDX-FileCopyrightText: Copyright (c) 1993-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "vfcCommon.h" #include "NvInfer.h" #include "NvInferPlugin.h" #include "roiAlignPlugin/roiAlignPlugin.h" #include using namespace nvinfer1; using nvinfer1::plugin::ROIAlignV3PluginCreator; namespace nvinfer1::plugin { class ThreadSafeLoggerFinder { private: ILoggerFinder* mLoggerFinder{nullptr}; std::mutex mMutex; public: ThreadSafeLoggerFinder() = default; //! Set the logger finder. void setLoggerFinder(ILoggerFinder* finder) { std::lock_guard lk(mMutex); if (mLoggerFinder == nullptr && finder != nullptr) { mLoggerFinder = finder; } } //! Get the logger. ILogger* getLogger() noexcept { std::lock_guard lk(mMutex); if (mLoggerFinder != nullptr) { return mLoggerFinder->findLogger(); } return nullptr; } }; ThreadSafeLoggerFinder gLoggerFinder; ILogger* getPluginLogger() { return gLoggerFinder.getLogger(); } } // namespace nvinfer1::plugin extern "C" TENSORRTAPI IPluginCreatorInterface* const* getCreators(int32_t& nbCreators) { nbCreators = 1; static ROIAlignV3PluginCreator sRoiAlignCreator; static IPluginCreatorInterface* const kPLUGIN_CREATOR_LIST[] = {&sRoiAlignCreator}; return kPLUGIN_CREATOR_LIST; } extern "C" TENSORRTAPI void setLoggerFinder(nvinfer1::ILoggerFinder* finder) { nvinfer1::plugin::gLoggerFinder.setLoggerFinder(finder); }