omni/connect/core/LiveSessionInfo.h

File members: omni/connect/core/LiveSessionInfo.h

// SPDX-FileCopyrightText: Copyright (c) 2022-2024 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 "Api.h"

#if OMNICONNECTCORE_WITH_NUCLEUS

#include <memory>
#include <string>
#include <vector>

namespace omni::connect::core
{

class OMNICONNECTCORE_API LiveSessionInfo
{
public:

    using SessionNames = std::vector<std::string>;

    static std::shared_ptr<LiveSessionInfo> create(const std::string& rootStageUri);

    ~LiveSessionInfo();

    SessionNames getSessionNames() const;

    bool init(const std::string& sessionName);

    const std::string& getName() const;

    bool exists() const;

    const std::string& getAllSessionsFolderUri() const;

    const std::string& getRootStageUri() const;

    const std::string& getLiveLayerUri() const;

    const std::string& getConfigUri() const;

    const std::string& getChannelUri() const;

    static std::string getSessionNameFromUri(const std::string& sessionLink);

private:

    LiveSessionInfo(const std::string& rootStageUri);
    LiveSessionInfo();

    class InfoImpl;
    InfoImpl* m_impl;
};
} // namespace omni::connect::core

#endif // OMNICONNECTCORE_WITH_NUCLEUS