mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
3f7671000a
* Add a few pre-made sanitizer suppressions * Test Sanitization: Fix threading issues * Test Sanitization: Allow deletion of PubSub We still don't delete it in main code, but this allows us to try deleting it in tests. * Test Sanitization: Fix some memory leaks * fix gtest clang-tidy warning * const emojis test :-)
45 lines
691 B
C++
45 lines
691 B
C++
#pragma once
|
|
|
|
#include <mutex>
|
|
|
|
template <typename T>
|
|
class ReceivedMessage
|
|
{
|
|
mutable std::mutex mutex;
|
|
|
|
bool isSet{false};
|
|
T t;
|
|
|
|
public:
|
|
ReceivedMessage() = default;
|
|
|
|
explicit operator bool() const
|
|
{
|
|
std::unique_lock lock(this->mutex);
|
|
|
|
return this->isSet;
|
|
}
|
|
|
|
ReceivedMessage &operator=(const T &newT)
|
|
{
|
|
std::unique_lock lock(this->mutex);
|
|
|
|
this->isSet = true;
|
|
this->t = newT;
|
|
|
|
return *this;
|
|
}
|
|
|
|
bool operator==(const T &otherT) const
|
|
{
|
|
std::unique_lock lock(this->mutex);
|
|
|
|
return this->t == otherT;
|
|
}
|
|
|
|
const T *operator->() const
|
|
{
|
|
return &this->t;
|
|
}
|
|
};
|