52 lines
1.1 KiB
C++
52 lines
1.1 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#ifndef K4AVIEWERLOGMANAGER_H
|
|
#define K4AVIEWERLOGMANAGER_H
|
|
|
|
// System headers
|
|
//
|
|
#include <list>
|
|
#include <memory>
|
|
#include <mutex>
|
|
#include <sstream>
|
|
|
|
// Library headers
|
|
//
|
|
#include <k4a/k4a.hpp>
|
|
|
|
// Project headers
|
|
//
|
|
|
|
namespace k4aviewer
|
|
{
|
|
class IK4AViewerLogListener
|
|
{
|
|
public:
|
|
virtual void Log(k4a_log_level_t severity, const char *file, int line, const char *msg) = 0;
|
|
virtual ~IK4AViewerLogListener() = default;
|
|
};
|
|
|
|
class K4AViewerLogManager
|
|
{
|
|
public:
|
|
static K4AViewerLogManager &Instance();
|
|
|
|
void Log(k4a_log_level_t severity, const char *file, int line, const char *msg);
|
|
|
|
void RegisterListener(std::shared_ptr<IK4AViewerLogListener> listener);
|
|
|
|
private:
|
|
K4AViewerLogManager();
|
|
~K4AViewerLogManager();
|
|
|
|
static void LoggerCallback(void *context, k4a_log_level_t level, const char *file, int line, const char *msg);
|
|
|
|
std::mutex m_mutex;
|
|
std::list<std::weak_ptr<IK4AViewerLogListener>> m_listeners;
|
|
};
|
|
|
|
} // namespace k4aviewer
|
|
|
|
#endif
|