1a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin/*
2a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin *
4a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin *  Use of this source code is governed by a BSD-style license
5a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin *  that can be found in the LICENSE file in the root of the source
6a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin *  tree. An additional intellectual property rights grant can be found
7a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin *  in the file PATENTS.  All contributing project authors may
8a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin *  be found in the AUTHORS file in the root of the source tree.
9a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin */
10a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin
11a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_CRITICAL_SECTION_WINDOWS_H_
12a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_CRITICAL_SECTION_WINDOWS_H_
13a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin
14a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#include "typedefs.h"
15a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#include "critical_section_wrapper.h"
16a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#include <windows.h>
17a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin
18a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinnamespace webrtc {
19a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinclass CriticalSectionWindows : public CriticalSectionWrapper
20a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin{
21a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinpublic:
22a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin    CriticalSectionWindows();
23a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin
24a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin    virtual ~CriticalSectionWindows();
25a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin
26a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin    virtual void Enter();
27a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin    virtual void Leave();
28a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin
29a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinprivate:
30a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin    CRITICAL_SECTION crit;
31a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin
32a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin    friend class ConditionVariableWindows;
33a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin};
34a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin} // namespace webrtc
35a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin
36a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_CRITICAL_SECTION_WINDOWS_H_
37