#pragma once #include #include #include "NetworkMessage.hpp" #include "NewConnectionEvent.hpp" #include "DisconnectedEvent.hpp" #include "DataReceivedEvent.hpp" namespace std::net { class MessageQueue { public: MessageQueue() { } void EnqueueMessageToSend(const NetworkMessage &msg); void EnqueueMessageReceived(const NetworkMessage &msg); void EnqueueDisconnection(const NetworkMessage &msg); void EnqueueConnection(const NetworkMessage &msg); NetworkMessage DequeueMessageToSend(); uint32_t SendSize(); private: std::deque m_messagesToSend; std::deque m_connectionEvents; std::deque m_disconnectedEvents; std::deque m_dataReceivedEvents; std::mutex m_sendMutex; std::mutex m_receivedMutex; std::mutex m_disconnectMutex; std::mutex m_connectionMutex; }; }