X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fdevices%2FCECBusDevice.h;h=d227c0312749611f7bc753a51abab5de3542a1df;hb=2ee922ad2f1812c74f2aa6e61305fdcc5c27de53;hp=8a80f48673a7b179223f89c472f442a7045b82af;hpb=d9de2aae6b2f47b8e1faacc69adba7406b9d85f0;p=deb_libcec.git diff --git a/src/lib/devices/CECBusDevice.h b/src/lib/devices/CECBusDevice.h index 8a80f48..d227c03 100644 --- a/src/lib/devices/CECBusDevice.h +++ b/src/lib/devices/CECBusDevice.h @@ -50,22 +50,11 @@ namespace CEC class CResponse { public: - CResponse(cec_opcode opcode) : - m_opcode(opcode){} - ~CResponse(void) - { - Broadcast(); - } - - bool Wait(uint32_t iTimeout) - { - return m_event.Wait(iTimeout); - } - - void Broadcast(void) - { - m_event.Broadcast(); - } + CResponse(cec_opcode opcode); + ~CResponse(void); + + bool Wait(uint32_t iTimeout); + void Broadcast(void); private: cec_opcode m_opcode; @@ -75,52 +64,15 @@ namespace CEC class CWaitForResponse { public: - CWaitForResponse(void) {} - ~CWaitForResponse(void) - { - Clear(); - } - - void Clear() - { - PLATFORM::CLockObject lock(m_mutex); - for (std::map::iterator it = m_waitingFor.begin(); it != m_waitingFor.end(); it++) - it->second->Broadcast(); - m_waitingFor.clear(); - } - - bool Wait(cec_opcode opcode, uint32_t iTimeout = CEC_DEFAULT_TRANSMIT_WAIT) - { - CResponse *response = GetEvent(opcode); - return response ? response->Wait(iTimeout) : false; - } - - void Received(cec_opcode opcode) - { - CResponse *response = GetEvent(opcode); - if (response) - response->Broadcast(); - } + CWaitForResponse(void); + ~CWaitForResponse(void); + + void Clear(); + bool Wait(cec_opcode opcode, uint32_t iTimeout = CEC_DEFAULT_TRANSMIT_WAIT); + void Received(cec_opcode opcode); private: - CResponse *GetEvent(cec_opcode opcode) - { - CResponse *retVal(NULL); - { - PLATFORM::CLockObject lock(m_mutex); - std::map::iterator it = m_waitingFor.find(opcode); - if (it != m_waitingFor.end()) - { - retVal = it->second; - } - else - { - retVal = new CResponse(opcode); - m_waitingFor[opcode] = retVal; - } - return retVal; - } - } + CResponse *GetEvent(cec_opcode opcode); PLATFORM::CMutex m_mutex; std::map m_waitingFor;