34 lines
748 B
C
34 lines
748 B
C
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <XCEngine/Debug/ILogSink.h>
|
||
|
|
#include <XCEngine/Debug/LogEntry.h>
|
||
|
|
#include <vector>
|
||
|
|
#include <functional>
|
||
|
|
#include <mutex>
|
||
|
|
|
||
|
|
namespace XCEngine {
|
||
|
|
namespace Debug {
|
||
|
|
|
||
|
|
class EditorConsoleSink : public ILogSink {
|
||
|
|
public:
|
||
|
|
static EditorConsoleSink* GetInstance();
|
||
|
|
|
||
|
|
EditorConsoleSink();
|
||
|
|
~EditorConsoleSink() override;
|
||
|
|
|
||
|
|
void Log(const LogEntry& entry) override;
|
||
|
|
void Flush() override;
|
||
|
|
|
||
|
|
const std::vector<LogEntry>& GetLogs() const;
|
||
|
|
void Clear();
|
||
|
|
void SetCallback(std::function<void()> callback);
|
||
|
|
|
||
|
|
private:
|
||
|
|
mutable std::mutex m_mutex;
|
||
|
|
std::vector<LogEntry> m_logs;
|
||
|
|
std::function<void()> m_callback;
|
||
|
|
static constexpr size_t MAX_LOGS = 1000;
|
||
|
|
};
|
||
|
|
|
||
|
|
} // namespace Debug
|
||
|
|
} // namespace XCEngine
|