Changeset View
Changeset View
Standalone View
Standalone View
source/tools/atlas/GameInterface/MessagePasserImpl.h
Show All 14 Lines | |||||
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. | * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. | ||||
*/ | */ | ||||
#ifndef INCLUDED_MESSAGEPASSERIMPL | #ifndef INCLUDED_MESSAGEPASSERIMPL | ||||
#define INCLUDED_MESSAGEPASSERIMPL | #define INCLUDED_MESSAGEPASSERIMPL | ||||
#include "MessagePasser.h" | #include "MessagePasser.h" | ||||
#include "lib/posix/posix_pthread.h" | |||||
#include "ps/CStr.h" | |||||
#include <queue> | |||||
#include <mutex> | |||||
class MessagePasserImpl : public AtlasMessage::MessagePasser | class MessagePasserImpl : public AtlasMessage::MessagePasser | ||||
{ | { | ||||
NONCOPYABLE(MessagePasserImpl); | NONCOPYABLE(MessagePasserImpl); | ||||
public: | public: | ||||
MessagePasserImpl(); | MessagePasserImpl() = default; | ||||
~MessagePasserImpl(); | |||||
virtual void Add(AtlasMessage::IMessage* msg); | virtual void Add(AtlasMessage::IMessage* msg); | ||||
virtual AtlasMessage::IMessage* Retrieve(); | |||||
virtual void Query(AtlasMessage::QueryMessage* qry, void(*timeoutCallback)()); | virtual void Query(AtlasMessage::QueryMessage* qry, void(*timeoutCallback)()); | ||||
bool IsEmpty(); | |||||
void SetTrace(bool t); | void SetTrace(bool t); | ||||
private: | private: | ||||
std::mutex m_Mutex; | bool m_Trace = false; | ||||
CStr m_SemaphoreName; | |||||
sem_t* m_Semaphore; | |||||
std::queue<AtlasMessage::IMessage*> m_Queue; | |||||
bool m_Trace; | |||||
}; | }; | ||||
#endif // INCLUDED_MESSAGEPASSERIMPL | #endif // INCLUDED_MESSAGEPASSERIMPL |
Wildfire Games · Phabricator