mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-18 22:18:19 +00:00
10470046b7
Use `CLock` and `CLockScope` instead of `std::mutex` and add clang thread-safety analysis annotations everywhere except for usages in engine graphics and video, as those usages also involve `std::condition_variable`. Fix lock not being unlocked on all code paths in `CFutureLogger::Log`, which is caught by the static analysis.
24 lines
526 B
C++
24 lines
526 B
C++
#ifndef ENGINE_SERVER_SERVER_LOGGER_H
|
|
#define ENGINE_SERVER_SERVER_LOGGER_H
|
|
#include <base/logger.h>
|
|
|
|
#include <thread>
|
|
|
|
class CServer;
|
|
|
|
class CServerLogger : public ILogger
|
|
{
|
|
CServer *m_pServer = nullptr;
|
|
CLock m_PendingLock;
|
|
std::vector<CLogMessage> m_vPending;
|
|
std::thread::id m_MainThread;
|
|
|
|
public:
|
|
CServerLogger(CServer *pServer);
|
|
void Log(const CLogMessage *pMessage) override REQUIRES(!m_PendingLock);
|
|
// Must be called from the main thread!
|
|
void OnServerDeletion();
|
|
};
|
|
|
|
#endif // ENGINE_SERVER_SERVER_LOGGER_H
|