Support multiple listening sockets. Actually mostly because it makes the code somewha...
[cubemap] / markpool.h
1 #ifndef _MARKPOOL_H
2 #define _MARKPOOL_H
3
4 // A class that hands out fwmarks from a given range in a thread-safe fashion.
5 // If the range is empty, it returns 0.
6
7 #include <pthread.h>
8 #include <queue>
9
10 class MarkPool {
11 public:
12         // Limits are [start, end>. Numbers are 16-bit, so above 65535 do not make sense.
13         MarkPool(int start, int end);
14
15         int get_mark();
16         void release_mark(int mark);
17         
18 private:
19         int start, end;
20
21         pthread_mutex_t mutex;
22         std::queue<int> free_marks;
23 };
24
25 #endif  // !defined(_MARKPOOL_H)