#include "cThreadQueue.h" #include //============================================================================== // We instantiate this right at the start CThreadQueue messageLoop; //============================================================= auto CThreadQueue::operator<<( MessageType newMessage )->CThreadQueue & { NewMessage( newMessage, "" ); return (*this); } //============================================================= auto CThreadQueue::operator <<( char *toPush ) ->CThreadQueue & { NewMessage( MSG_PRINT, toPush ); return (*this); } //============================================================= auto CThreadQueue::operator <<( const char *toPush )->CThreadQueue & { NewMessage( MSG_PRINT, toPush ); return ( *this ); } //============================================================= auto CThreadQueue::operator <<( const std::string& toPush )->CThreadQueue & { NewMessage( MSG_PRINT, toPush.c_str() ); return ( *this ); } //============================================================= auto CThreadQueue::Empty()->bool { std::scoped_lock lock(queuelock); bool retVal = internalQueue.empty(); return retVal; } //============================================================= auto CThreadQueue::GrabMessage()->MessagePassed { std::scoped_lock lock(queuelock); MessagePassed toReturn = internalQueue.front(); internalQueue.pop(); return toReturn; } //============================================================= auto CThreadQueue::NewMessage( MessageType toAdd, const std::string& data )->void{ MessagePassed adding; adding.actualMessage = toAdd; adding.data = data ; std::scoped_lock lock(queuelock); internalQueue.push( adding ); } //============================================================= auto CThreadQueue::bulkData() ->std::queue { std::queue returnQueue; std::scoped_lock lock(queuelock); std::swap(returnQueue,internalQueue) ; return returnQueue; }