Twitch SDK (Internal)
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ttv::WinConditionMutex Class Reference

#include <winmutex.h>

Inheritance diagram for ttv::WinConditionMutex:
ttv::IConditionMutex ttv::IMutex

Public Member Functions

 WinConditionMutex ()
 
virtual ~WinConditionMutex ()
 
virtual TTV_ErrorCode Lock () override
 
virtual TTV_ErrorCode TryLock () override
 
virtual TTV_ErrorCode Unlock () override
 
virtual TTV_ErrorCode Wait () override
 
virtual TTV_ErrorCode WaitFor (uint64_t timeoutMilliseconds) override
 
virtual TTV_ErrorCode Signal () override
 
virtual TTV_ErrorCode Broadcast () override
 

Private Member Functions

TTV_ErrorCode Destroy ()
 

Private Attributes

CRITICAL_SECTION mCriticalSection
 
CONDITION_VARIABLE mConditionVariable
 
bool mLocked
 

Detailed Description

Windows implementation of IConditionMutex using WinApi Condition Variables. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682052(v=vs.85).aspx. Windows Server 2003 / XP and below aren't supported.

Constructor & Destructor Documentation

◆ WinConditionMutex()

ttv::WinConditionMutex::WinConditionMutex ( )

◆ ~WinConditionMutex()

virtual ttv::WinConditionMutex::~WinConditionMutex ( )
virtual

Member Function Documentation

◆ Broadcast()

virtual TTV_ErrorCode ttv::WinConditionMutex::Broadcast ( )
overridevirtual

Implements ttv::IConditionMutex.

◆ Destroy()

TTV_ErrorCode ttv::WinConditionMutex::Destroy ( )
private

◆ Lock()

virtual TTV_ErrorCode ttv::WinConditionMutex::Lock ( )
overridevirtual

Block/wait until the mutex is free to take, and then acquire the mutex.

Returns
  • TTV_EC_SUCCESS: Mutex has been successfully acquired.

Implements ttv::IMutex.

◆ Signal()

virtual TTV_ErrorCode ttv::WinConditionMutex::Signal ( )
overridevirtual

Implements ttv::IConditionMutex.

◆ TryLock()

virtual TTV_ErrorCode ttv::WinConditionMutex::TryLock ( )
overridevirtual

Attempt to acquire the mutex, without waiting for the lock to be available.

Returns
  • TTV_EC_SUCCESS: Mutex has been successfully acquired.
  • TTV_WRN_MUTEX_NOT_ACQUIRED: Lock has failed and mutex has not been acquired.

Implements ttv::IMutex.

◆ Unlock()

virtual TTV_ErrorCode ttv::WinConditionMutex::Unlock ( )
overridevirtual

Release the previously acquired mutex (through Lock()).

Returns
  • TTV_EC_SUCCESS: Mutex has been sucessfully released.

Implements ttv::IMutex.

◆ Wait()

virtual TTV_ErrorCode ttv::WinConditionMutex::Wait ( )
overridevirtual

Wait on the IConditionMutex until notified to wake up (through Signal()/Broadcast()).

Returns
  • TTV_EC_SUCCESS: Waited sucessfully on the IConditionMutex.
  • TTV_WRN_CONDITION_WAIT_FAILED: Wait was not successful.

Implements ttv::IConditionMutex.

◆ WaitFor()

virtual TTV_ErrorCode ttv::WinConditionMutex::WaitFor ( uint64_t  timeoutMilliseconds)
overridevirtual

Wait on the IConditionMutex until notified to wake up OR the timeout is reached.

Parameters
[in]timeoutMillisecondsThe timeout to wait in milliseconds.
Returns
  • TTV_EC_SUCCESS: Waited sucessfully on the IConditionMutex (and was notified through Signal()/Broadcast()).
  • TTV_WRN_WAIT_TIMEOUT: The timeout was hit while waiitng on IConditionMutex.
  • TTV_WRN_CONDITION_WAIT_FAILED: Wait was not successful.

Implements ttv::IConditionMutex.

Member Data Documentation

◆ mConditionVariable

CONDITION_VARIABLE ttv::WinConditionMutex::mConditionVariable
private

◆ mCriticalSection

CRITICAL_SECTION ttv::WinConditionMutex::mCriticalSection
private

◆ mLocked

bool ttv::WinConditionMutex::mLocked
private

The documentation for this class was generated from the following file: