Removed unused method
[public/netxms.git] / include / nxqueue.h
CommitLineData
c25cb4a0
VK
1/*
2** NetXMS - Network Management System
1499848d 3** Copyright (C) 2003-2013 Victor Kirhenshtein
c25cb4a0
VK
4**
5** This program is free software; you can redistribute it and/or modify
68f384ea
VK
6** it under the terms of the GNU Lesser General Public License as published
7** by the Free Software Foundation; either version 3 of the License, or
c25cb4a0
VK
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
68f384ea 15** You should have received a copy of the GNU Lesser General Public License
c25cb4a0
VK
16** along with this program; if not, write to the Free Software
17** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18**
cd4c8ca3 19** File: nxqueue.h
c25cb4a0
VK
20**
21**/
22
23#ifndef _nxqueue_h_
24#define _nxqueue_h_
25
b160350d 26#include <nms_util.h>
77312b6f 27
1499848d
VK
28/**
29 * Comparator for queue search
30 */
85f1fea1
VK
31typedef bool (*QUEUE_COMPARATOR)(void *key, void *object);
32
1499848d
VK
33/**
34 * Queue class
35 */
b160350d 36class LIBNETXMS_EXPORTABLE Queue
c25cb4a0
VK
37{
38private:
cd4c8ca3
VK
39 MUTEX m_mutexQueueAccess;
40 CONDITION m_condWakeup;
c25cb4a0 41 void **m_pElements;
967893bb
VK
42 UINT32 m_dwNumElements;
43 UINT32 m_dwBufferSize;
44 UINT32 m_dwFirst;
45 UINT32 m_dwLast;
46 UINT32 m_dwBufferIncrement;
25c85230 47 BOOL m_bShutdownFlag;
c25cb4a0 48
1499848d
VK
49 void commonInit();
50 void lock() { MutexLock(m_mutexQueueAccess); }
51 void unlock() { MutexUnlock(m_mutexQueueAccess); }
c25cb4a0
VK
52
53public:
bb7a686c 54 Queue();
967893bb 55 Queue(UINT32 dwInitialSize, UINT32 dwBufferIncrement = 32);
c25cb4a0
VK
56 ~Queue();
57
58 void Put(void *pObject);
25c85230
VK
59 void Insert(void *pObject);
60 void SetShutdownMode();
61 void *Get();
62 void *GetOrBlock();
967893bb 63 UINT32 Size() { return m_dwNumElements; }
25c85230 64 void Clear();
85f1fea1 65 void *find(void *key, QUEUE_COMPARATOR comparator);
46117060 66 bool remove(void *key, QUEUE_COMPARATOR comparator);
c25cb4a0
VK
67};
68
69#endif /* _nxqueue_h_ */