IObservability.h#

Fully qualified name: omni/observability/IObservability.h

File members: omni/observability/IObservability.h

// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: LicenseRef-NvidiaProprietary
//
// NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
// property and proprietary rights in and to this material, related
// documentation and any modifications thereto. Any use, reproduction,
// disclosure or distribution of this material and related documentation
// without an express license agreement from NVIDIA CORPORATION or
// its affiliates is strictly prohibited.

#pragma once

#include "../../carb/Interface.h"
#include "../../carb/logging/Log.h"
#include "../../carb/cpp/StringView.h"

#define omni_observability_IObservability_latest CARB_HEXVERSION(1, 0)
#ifndef omni_observability_IObservability
#    define omni_observability_IObservability CARB_HEXVERSION(1, 0)
#endif

namespace carb
{
template <class>
class ObjectPtr;
};

namespace omni
{
namespace observability
{
class IMeter;

constexpr char kEmitLevelSetting[] = "/observability/logs/emitLevel";

constexpr int32_t kDefaultEmitLevelSetting = carb::logging::kLevelWarn;

class IObservability
{
public:
    CARB_PLUGIN_INTERFACE_EX("omni::observability::IObservability",
                             omni_observability_IObservability_latest,
                             omni_observability_IObservability)

    virtual carb::ObjectPtr<IMeter> createMeter(carb::cpp::string_view name,
                                                carb::cpp::string_view version = "",
                                                carb::cpp::string_view schemaUrl = "") = 0;

    virtual void flush() = 0;
};

} // namespace observability
} // namespace omni