Beam-lib  2.16.3
This is the Beam C++ class library.
BCondInt.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * BCondInt.h BCondInt Class
3  * T.Barnaby, BEAM Ltd, 10/12/02
4  * Copyright (c) 2012 All Right Reserved, Beam Ltd, http://www.beam.ltd.uk
5  *******************************************************************************
6  */
7 #ifndef BCONDINT_H
8 #define BCONDINT_H 1
9 
10 #include <BTypes.h>
11 #include <pthread.h>
12 
14 class BCondInt {
15 public:
16  BCondInt();
17  ~BCondInt();
18 
19  void setValue(BInt value);
20  BInt value() const;
21 
22  BInt increment(BInt v = 1);
23  BInt decrement(BInt v = 1);
24 
28 
29  void operator+=(int v);
30  void operator-=(int v);
31  void operator++(int);
32  void operator--(int);
33 
34 private:
35  pthread_mutex_t omutex;
36  pthread_cond_t ocond;
37  BInt ovalue;
38 };
39 
40 inline void BCondInt::operator+=(BInt v){
41  increment(v);
42 }
43 
44 inline void BCondInt::operator-=(BInt v){
45  decrement(v);
46 }
47 
48 inline void BCondInt::operator++(int){
49  increment(1);
50 }
51 
52 inline void BCondInt::operator--(int){
53  decrement(1);
54 }
55 
56 
58 class BCondValue {
59 public:
60  BCondValue();
61  ~BCondValue();
62 
63  void setValue(int value);
64  int value();
65 
66  int increment(int v = 1);
67  int decrement(int v = 1);
68 
69  int waitMoreThanOrEqual(int v, int decrement = 0, int timeOutUs = 0);
70  int waitLessThanOrEqual(int v, int increment = 0, int timeOutUs = 0);
71  int waitLessThan(int v, int timeOutUs = 0);
72 
73  void operator+=(int v);
74  void operator-=(int v);
75  void operator++(int);
76  void operator--(int);
77 private:
78  pthread_mutex_t omutex;
79  pthread_cond_t ocond;
80  int ovalue;
81 };
82 
83 inline void BCondValue::operator+=(int v){
84  increment(v);
85 }
86 
87 inline void BCondValue::operator-=(int v){
88  decrement(v);
89 }
90 
91 inline void BCondValue::operator++(int){
92  increment(1);
93 }
94 
95 inline void BCondValue::operator--(int){
96  decrement(1);
97 }
98 
100 class BCondBool {
101 public:
102  BCondBool();
103  ~BCondBool();
104 
105  int set();
106  int clear();
107  int value();
108  int wait();
109  int timedWait(int timeOutUs);
110 
111  operator int(){ return value(); }
112 private:
113  pthread_mutex_t omutex;
114  pthread_cond_t ocond;
115  int ovalue;
116 };
117 
118 
119 class BCondWrap {
120 public:
121  BCondWrap();
122  ~BCondWrap();
123 
124  void setValue(uint32_t value);
125  uint32_t value();
126 
127  uint32_t increment(uint32_t v = 1);
128  uint32_t decrement(uint32_t v = 1);
129 
130  int waitMoreThanOrEqual(uint32_t v, uint32_t decrement = 0, uint32_t timeOutUs = 0);
131  int waitLessThanOrEqual(uint32_t v, uint32_t increment = 0, uint32_t timeOutUs = 0);
132  int waitLessThan(uint32_t v, uint32_t timeOutUs = 0);
133 
134  void operator+=(int v);
135  void operator-=(int v);
136  void operator++(int);
137  void operator--(int);
138 private:
139  int diff(uint32_t v);
140 
141  pthread_mutex_t omutex;
142  pthread_cond_t ocond;
143  uint32_t ovalue;
144 };
145 
146 inline void BCondWrap::operator+=(int v){
147  increment(v);
148 }
149 
150 inline void BCondWrap::operator-=(int v){
151  decrement(v);
152 }
153 
154 inline void BCondWrap::operator++(int){
155  increment(1);
156 }
157 
158 inline void BCondWrap::operator--(int){
159  decrement(1);
160 }
161 
164 public:
165  BCondResource();
166  ~BCondResource();
167 
168  int lock(uint32_t timeOutUs = 0);
169  int unlock();
170 
171  int start(uint32_t timeOutUs = 0);
172  int end();
173 
174  int locked();
175  int inUse();
176 private:
177  pthread_mutex_t omutex;
178  pthread_cond_t ocond;
179  int olock;
180  int ouse;
181 };
182 
183 #endif
void operator-=(int v)
Subtract from value. Wakes waiting.
Definition: BCondInt.h:87
BInt32 BInt
Definition: BTypes.h:29
void operator--(int)
Decrement value. Wakes waiting.
Definition: BCondInt.h:158
void operator+=(int v)
Add to value. Wakes waiting.
Definition: BCondInt.h:83
int decrement(int v=1)
Decrement. Wakes waiting.
Definition: BCondInt.cpp:171
int set()
Set value. Wakes waiting.
Definition: BCondInt.cpp:271
void operator--(int)
Decrement value. Wakes waiting.
Definition: BCondInt.h:95
void operator+=(int v)
Add to value. Wakes waiting.
Definition: BCondInt.h:146
uint32_t increment(uint32_t v=1)
Increment. Wakes waiting.
Definition: BCondInt.cpp:349
Thread conditional boolean.
Definition: BCondInt.h:100
int inUse()
Definition: BCondInt.cpp:534
void operator-=(int v)
Subtract from value. Wakes waiting.
Definition: BCondInt.h:150
Thread conditional value.
Definition: BCondInt.h:58
BCondBool()
Definition: BCondInt.cpp:260
int start(uint32_t timeOutUs=0)
Start using the resource.
Definition: BCondInt.cpp:495
BInt value() const
Current value.
Definition: BCondInt.cpp:42
Bool waitMoreThanOrEqual(BInt v, Bool decrement=0, BTimeout timeoutUs=BTimeoutForever)
Wait until value is at least the value given.
Definition: BCondInt.cpp:68
void operator++(int)
Increment value. Wakes waiting.
Definition: BCondInt.h:154
bool Bool
Definition: BTypes.h:15
~BCondWrap()
Definition: BCondInt.cpp:333
BUInt32 BTimeout
Definition: BTypes.h:42
int wait()
Wait until value is true.
Definition: BCondInt.cpp:294
~BCondBool()
Definition: BCondInt.cpp:266
BInt increment(BInt v=1)
Increment. Wakes waiting.
Definition: BCondInt.cpp:46
int waitLessThanOrEqual(int v, int increment=0, int timeOutUs=0)
Wait until value is equal to or below the value given.
Definition: BCondInt.cpp:208
Thread conditional value.
Definition: BCondInt.h:14
void operator++(int)
Increment value. Wakes waiting.
Definition: BCondInt.h:48
int clear()
Clear Value.
Definition: BCondInt.cpp:281
int increment(int v=1)
Increment. Wakes waiting.
Definition: BCondInt.cpp:160
int end()
Finish using the resource.
Definition: BCondInt.cpp:518
~BCondValue()
Definition: BCondInt.cpp:144
uint32_t value()
Current value.
Definition: BCondInt.cpp:345
int waitLessThan(uint32_t v, uint32_t timeOutUs=0)
Wait until value is equal to or below the value given.
Definition: BCondInt.cpp:423
int value()
Current value.
Definition: BCondInt.cpp:290
BCondWrap()
Definition: BCondInt.cpp:327
BCondValue()
Definition: BCondInt.cpp:138
~BCondInt()
Definition: BCondInt.cpp:30
Resource lock.
Definition: BCondInt.h:163
BInt decrement(BInt v=1)
Decrement. Wakes waiting.
Definition: BCondInt.cpp:57
Definition: BCondInt.h:119
int waitLessThan(int v, int timeOutUs=0)
Wait until value is equal to or below the value given.
Definition: BCondInt.cpp:234
const BTimeout BTimeoutForever
Definition: BTypes.h:43
int unlock()
Unlock the resource.
Definition: BCondInt.cpp:485
int lock(uint32_t timeOutUs=0)
Lock the resource, will wait for all usage to be 0.
Definition: BCondInt.cpp:463
BCondResource()
Definition: BCondInt.cpp:451
void operator--(int)
Decrement value. Wakes waiting.
Definition: BCondInt.h:52
BCondInt()
Definition: BCondInt.cpp:24
uint32_t decrement(uint32_t v=1)
Decrement. Wakes waiting.
Definition: BCondInt.cpp:360
void setValue(BInt value)
Set the value. Wakes waiting.
Definition: BCondInt.cpp:35
int value()
Current value.
Definition: BCondInt.cpp:156
int waitMoreThanOrEqual(uint32_t v, uint32_t decrement=0, uint32_t timeOutUs=0)
Wait until value is at least the value given.
Definition: BCondInt.cpp:371
int locked()
Definition: BCondInt.cpp:530
Bool waitLessThanOrEqual(BInt v, Bool increment=0, BTimeout timeoutUs=BTimeoutForever)
Wait until value is equal to or below the value given.
Definition: BCondInt.cpp:92
int timedWait(int timeOutUs)
Wait until set, with timeout.
Definition: BCondInt.cpp:304
void setValue(int value)
Set the value. Wakes waiting.
Definition: BCondInt.cpp:149
int waitLessThanOrEqual(uint32_t v, uint32_t increment=0, uint32_t timeOutUs=0)
Wait until value is equal to or below the value given.
Definition: BCondInt.cpp:397
void operator++(int)
Increment value. Wakes waiting.
Definition: BCondInt.h:91
Bool waitLessThan(BInt v, BTimeout timeoutUs=BTimeoutForever)
Wait until value is equal to or below the value given.
Definition: BCondInt.cpp:115
~BCondResource()
Definition: BCondInt.cpp:458
void setValue(uint32_t value)
Set the value. Wakes waiting.
Definition: BCondInt.cpp:338
int waitMoreThanOrEqual(int v, int decrement=0, int timeOutUs=0)
Wait until value is at least the value given.
Definition: BCondInt.cpp:182
void operator+=(int v)
Add to value. Wakes waiting.
Definition: BCondInt.h:40
void operator-=(int v)
Subtract from value. Wakes waiting.
Definition: BCondInt.h:44