Added ObjectLock template class to add mutex lock option to any object.
[public/netxms.git] / include / nms_util.h
index 05a8b7f..8ce0673 100644 (file)
@@ -486,6 +486,25 @@ public:
        bool restart();
 };
 
+/**
+ * Class that can store any object with connected to it mutex
+ */
+template <class T> class ObjectLock
+{
+private:
+   MUTEX m_mutex;
+   T *m_data;
+public:
+   ObjectLock(T *obj) { m_data = obj;  m_mutex = MutexCreate(); }
+   ObjectLock() { m_data = NULL;  m_mutex = MutexCreate(); }
+   ~ObjectLock() { MutexDestroy(m_mutex); }
+   void lock() { MutexLock(m_mutex); }
+   void unlock() { MutexUnlock(m_mutex); }
+   T *get() { return m_data; }
+   void set(T *newObj) { m_data = newObj; }
+   operator T*() { return m_data; }
+};
+
 /**
  * Pair class (stores pair of items)
  */