Twitch SDK (Internal)
winmutex.h
Go to the documentation of this file.
1 /********************************************************************************************
2 * Twitch Broadcasting SDK
3 *
4 * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5 * may not be copied or used except in accordance with the terms of that agreement
6 * Copyright (c) 2012-2015 Twitch Interactive, Inc.
7 *********************************************************************************************/
8 
9 #pragma once
10 
11 #include "twitchsdk/core/mutex.h"
12 
13 #include <windows.h>
14 
15 
16 namespace ttv
17 {
18  class WinMutex;
19  class WinConditionMutex;
20  class WinMutexFactory;
21 }
22 
28 class ttv::WinMutex : public IMutex
29 {
30 public:
31  WinMutex();
32  virtual ~WinMutex();
33 
34  virtual TTV_ErrorCode Lock() override;
35  virtual TTV_ErrorCode TryLock() override;
36  virtual TTV_ErrorCode Unlock() override;
37 
38 private:
40 
41  CRITICAL_SECTION mCriticalSection;
42  bool mLocked;
43 };
44 
45 
52 {
53 public:
55  virtual ~WinConditionMutex();
56 
57  virtual TTV_ErrorCode Lock() override;
58  virtual TTV_ErrorCode TryLock() override;
59  virtual TTV_ErrorCode Unlock() override;
60  virtual TTV_ErrorCode Wait() override;
61  virtual TTV_ErrorCode WaitFor(uint64_t timeoutMilliseconds) override;
62  virtual TTV_ErrorCode Signal() override;
63  virtual TTV_ErrorCode Broadcast() override;
64 
65 private:
67 
68  CRITICAL_SECTION mCriticalSection;
69  CONDITION_VARIABLE mConditionVariable;
70  bool mLocked;
71 };
72 
73 
75 {
76 public:
77 #pragma push_macro("CreateMutex")
78 #undef CreateMutex
79  virtual TTV_ErrorCode CreateMutex(std::shared_ptr<IMutex>& result) override;
80 #pragma pop_macro("CreateMutex")
81 
82  virtual TTV_ErrorCode CreateConditionMutex(std::shared_ptr<IConditionMutex>& result) override;
83 };
Definition: mutex.h:37
CRITICAL_SECTION mCriticalSection
Definition: winmutex.h:41
bool mLocked
Definition: winmutex.h:42
TTV_ErrorCode Destroy()
virtual ~WinMutex()
virtual TTV_ErrorCode Lock() override
virtual TTV_ErrorCode Unlock() override
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
Definition: winmutex.h:51
virtual TTV_ErrorCode TryLock() override
TTV_ErrorCode CreateConditionMutex(std::shared_ptr< IConditionMutex > &result)
CONDITION_VARIABLE mConditionVariable
Definition: winmutex.h:69
TTV_ErrorCode CreateMutex(std::shared_ptr< IMutex > &result)
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
CRITICAL_SECTION mCriticalSection
Definition: winmutex.h:68
Definition: mutex.h:109
Definition: winmutex.h:74
bool mLocked
Definition: winmutex.h:70
Definition: winmutex.h:28
Definition: mutex.h:70