Mir
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
test
mir_test_framework
cross_process_sync.h
Go to the documentation of this file.
1
/*
2
* Copyright © 2013 Canonical Ltd.
3
*
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License version 3,
6
* as published by the Free Software Foundation.
7
*
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15
*
16
* Authored by: Thomas Voss <thomas.voss@canonical.com>
17
*/
18
19
#ifndef MIR_TEST_FRAMEWORK_CROSS_PROCESS_SYNC_H_
20
#define MIR_TEST_FRAMEWORK_CROSS_PROCESS_SYNC_H_
21
22
#include <chrono>
23
24
namespace
mir_test_framework
25
{
26
// A cross-process synchronization primitive that supports simple
27
// wait-condition-like scenarios.
28
class
CrossProcessSync
29
{
30
public
:
31
CrossProcessSync
();
32
CrossProcessSync
(
const
CrossProcessSync
& rhs);
33
~CrossProcessSync
() noexcept;
34
35
CrossProcessSync
&
operator=
(
const
CrossProcessSync
& rhs);
36
37
// Try to signal the other side that we are ready for at most duration milliseconds.
38
// Throws a std::runtime_error if not successful.
39
void
try_signal_ready_for
(
const
std::chrono::milliseconds& duration);
40
41
void
try_signal_ready_for
();
42
43
// Wait for the other sides to signal readiness for at most duration milliseconds.
44
// Returns the number of ready signals that have been collected since creation.
45
// Throws std::runtime_error if not successful.
46
unsigned
int
wait_for_signal_ready_for
(
const
std::chrono::milliseconds& duration);
47
unsigned
int
wait_for_signal_ready_for
();
48
49
void
signal_ready
();
50
unsigned
int
wait_for_signal_ready
();
51
52
private
:
53
int
fds[2];
54
unsigned
int
counter;
55
};
56
}
57
58
#endif // MIR_TEST_FRAMEWORK_CROSS_PROCESS_SYNC_H_
Copyright © 2012,2013 Canonical Ltd.
Generated on Tue Oct 15 00:23:28 UTC 2013