8 MarkPool::MarkPool(int start, int end)
9 : start(start), end(end)
11 assert(start > 0 && start < 65536);
12 assert(end > 0 && end < 65536);
14 for (int i = start; i < end; ++i) {
18 pthread_mutex_init(&mutex, NULL);
21 int MarkPool::get_mark()
23 MutexLock lock(&mutex);
24 if (free_marks.empty()) {
25 fprintf(stderr, "WARNING: Out of free marks in mark pool %d-%d, session will not be marked.\n",
27 fprintf(stderr, " To fix, increase the pool size and HUP the server.\n");
30 int mark = free_marks.front();
35 void MarkPool::release_mark(int mark)
41 MutexLock lock(&mutex);
42 free_marks.push(mark);