Twitch SDK (Internal)
standardmutex.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 <mutex>
14 #include <condition_variable>
15 
16 namespace ttv
17 {
18  class StandardMutex;
19  class StandardConditionMutex;
20  class StandardMutexFactory;
21 }
22 
23 
24 class ttv::StandardMutex : public IMutex
25 {
26 public:
27  StandardMutex();
28  virtual ~StandardMutex();
29 
30  virtual TTV_ErrorCode Lock() override;
31  virtual TTV_ErrorCode TryLock() override;
32  virtual TTV_ErrorCode Unlock() override;
33 
34 private:
35  std::mutex mMutex;
36 };
37 
38 
40 {
41 public:
43  virtual ~StandardConditionMutex();
44 
45  virtual TTV_ErrorCode Lock() override;
46  virtual TTV_ErrorCode TryLock() override;
47  virtual TTV_ErrorCode Unlock() override;
48  virtual TTV_ErrorCode Wait() override;
49  virtual TTV_ErrorCode WaitFor(uint64_t timeoutMilliseconds) override;
50  virtual TTV_ErrorCode Signal() override;
51  virtual TTV_ErrorCode Broadcast() override;
52 
53 private:
54  std::mutex mMutex;
55  std::condition_variable mCondition;
56 };
57 
59 {
60 public:
61  virtual TTV_ErrorCode CreateMutex(std::shared_ptr<IMutex>& result);
62  virtual TTV_ErrorCode CreateConditionMutex(std::shared_ptr<IConditionMutex>& result);
63 };
Definition: mutex.h:37
Definition: standardmutex.h:24
virtual TTV_ErrorCode Unlock() override
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
Definition: standardmutex.h:58
TTV_ErrorCode CreateConditionMutex(std::shared_ptr< IConditionMutex > &result)
virtual ~StandardMutex()
TTV_ErrorCode CreateMutex(std::shared_ptr< IMutex > &result)
std::mutex mMutex
Definition: standardmutex.h:35
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
virtual TTV_ErrorCode TryLock() override
Definition: mutex.h:109
std::condition_variable mCondition
Definition: standardmutex.h:55
Definition: standardmutex.h:39
virtual TTV_ErrorCode Lock() override
Definition: mutex.h:70
std::mutex mMutex
Definition: standardmutex.h:54