xref: /haiku/src/tools/cppunit/SemaphoreSyncObject.cpp (revision 7120e97489acbf17d86d3f33e3b2e68974fd4b23)
1 #include <SemaphoreSyncObject.h>
2 #include <cppunit/Exception.h>
3 
4 SemaphoreSyncObject::SemaphoreSyncObject()
5 	: fSemId(create_sem(1, "CppUnitSync"))
6 {
7 	if (fSemId < B_OK)
8 		throw CppUnit::Exception("SemaphoreSyncObject::SemaphoreSyncObject() -- Error creating semaphore");
9 }
10 
11 SemaphoreSyncObject::~SemaphoreSyncObject() {
12 	delete_sem(fSemId);
13 }
14 
15 void
16 SemaphoreSyncObject::lock() {
17 	if (acquire_sem(fSemId) < B_OK)
18 		throw CppUnit::Exception("SemaphoreSyncObject::lock() -- Error acquiring semaphore");
19 }
20 
21 void
22 SemaphoreSyncObject::unlock() {
23 	if (release_sem(fSemId) < B_OK)
24 		throw CppUnit::Exception("SemaphoreSyncObject::unlock() -- Error releasing semaphore");
25 }
26