blob: d8c47162edb57d924436fe19f34563deabaf1a23 [file] [log] [blame]
Tomasz Wasilczykc9ba6462017-07-07 13:28:00 -07001/*
2 * Copyright (C) 2017 The Android Open Source Project
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 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Tomasz Wasilczykc1763a62017-07-25 10:01:17 -070016#include <broadcastradio-vts-utils/call-barrier.h>
Tomasz Wasilczykc9ba6462017-07-07 13:28:00 -070017
18namespace android {
19namespace hardware {
20namespace broadcastradio {
21namespace vts {
22
23using std::lock_guard;
24using std::mutex;
25using std::unique_lock;
26
27void CallBarrier::call() {
28 lock_guard<mutex> lk(mMut);
29 mWasCalled = true;
30 mCond.notify_all();
31}
32
33bool CallBarrier::waitForCall(std::chrono::milliseconds timeout) {
34 unique_lock<mutex> lk(mMut);
35
36 if (mWasCalled) return true;
37
38 auto status = mCond.wait_for(lk, timeout);
39 return status == std::cv_status::no_timeout;
40}
41
42} // namespace vts
43} // namespace broadcastradio
44} // namespace hardware
45} // namespace android