Queue class declaration
authorVictor Kirhenshtein <victor@netxms.org>
Wed, 2 Jun 2004 15:53:04 +0000 (15:53 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Wed, 2 Jun 2004 15:53:04 +0000 (15:53 +0000)
.gitattributes
src/server/core/nxqueue.h [new file with mode: 0644]

index 550b9b1..61c4b14 100644 (file)
@@ -198,6 +198,7 @@ src/server/core/nms_objects.h -text
 src/server/core/nms_users.h -text
 src/server/core/node.cpp -text
 src/server/core/np.cpp -text
+src/server/core/nxqueue.h -text
 src/server/core/objects.cpp -text
 src/server/core/queue.cpp -text
 src/server/core/resource.h -text
diff --git a/src/server/core/nxqueue.h b/src/server/core/nxqueue.h
new file mode 100644 (file)
index 0000000..f1c982b
--- /dev/null
@@ -0,0 +1,56 @@
+/* 
+** NetXMS - Network Management System
+** Copyright (C) 2003, 2004 Victor Kirhenshtein
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+**
+** $module: nxqueue.h
+**
+**/
+
+#ifndef _nxqueue_h_
+#define _nxqueue_h_
+
+
+//
+// Queue class
+//
+
+class Queue
+{
+private:
+   MUTEX m_hQueueAccess;
+   CONDITION m_hConditionNotEmpty;
+   void **m_pElements;
+   DWORD m_dwNumElements;
+   DWORD m_dwBufferSize;
+   DWORD m_dwFirst;
+   DWORD m_dwLast;
+   DWORD m_dwBufferIncrement;
+
+   void Lock(void) { MutexLock(m_hQueueAccess, INFINITE); }
+   void Unlock(void) { MutexUnlock(m_hQueueAccess); }
+
+public:
+   Queue(DWORD dwInitialSize = 256, DWORD dwBufferIncrement = 32);
+   ~Queue();
+
+   void Put(void *pObject);
+   void *Get(void);
+   void *GetOrBlock(void);
+   DWORD Size(void) { return m_dwNumElements; }
+};
+
+#endif    /* _nxqueue_h_ */