audacia/src/commands/ResponseQueue.cpp

48 lines
995 B
C++

/**********************************************************************
Audacity - A Digital Audio Editor
Copyright 1999-2009 Audacity Team
File License: wxWidgets
Dan Horgan
******************************************************************//**
\file ResponseQueue.cpp
\brief Contains definitions for the ResponseQueue class
*//*******************************************************************/
#include "ResponseQueue.h"
#include <queue>
#include <string>
#include <wx/thread.h>
ResponseQueue::ResponseQueue()
: mCondition(mMutex)
{ }
ResponseQueue::~ResponseQueue()
{ }
void ResponseQueue::AddResponse(Response response)
{
wxMutexLocker locker(mMutex);
mResponses.push(response);
mCondition.Signal();
}
Response ResponseQueue::WaitAndGetResponse()
{
wxMutexLocker locker(mMutex);
if (mResponses.empty())
{
mCondition.Wait();
}
wxASSERT(!mResponses.empty());
Response msg = mResponses.front();
mResponses.pop();
return msg;
}