1/*
2* Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3*
4* Licensed under the Apache License, Version 2.0 (the "License").
5* You may not use this file except in compliance with the License.
6* A copy of the License is located at
7*
8* http://aws.amazon.com/apache2.0
9*
10* or in the "license" file accompanying this file. This file is distributed
11* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12* express or implied. See the License for the specific language governing
13* permissions and limitations under the License.
14*/
15#include <aws/core/utils/GetTheLights.h>
16#include <cassert>
17
18namespace Aws
19{
20 namespace Utils
21 {
22 GetTheLights::GetTheLights() : m_value(0)
23 {
24 }
25
26 void GetTheLights::EnterRoom(std::function<void()> &&callable)
27 {
28 int cpy = ++m_value;
29 assert(cpy > 0);
30 if(cpy == 1)
31 {
32 callable();
33 }
34 }
35
36 void GetTheLights::LeaveRoom(std::function<void()> &&callable)
37 {
38 int cpy = --m_value;
39 assert(cpy >= 0);
40 if(cpy == 0)
41 {
42 callable();
43 }
44 }
45 }
46}