00001 /******************************************************************************* 00002 * * 00003 * PrimeSense NITE 1.3 * 00004 * Copyright (C) 2010 PrimeSense Ltd. * 00005 * * 00006 *******************************************************************************/ 00007 00008 00009 #ifndef _XNV_MESSAGE_GENERATOR_H_ 00010 #define _XNV_MESSAGE_GENERATOR_H_ 00011 00012 #include <XnStringsHash.h> 00013 00014 #include "XnVMessageListener.h" 00015 #include "XnVMessage.h" 00016 #include "XnVHandle.h" 00017 00022 class XNV_NITE_API XnVMessageGenerator 00023 { 00024 public: 00030 XnVMessageGenerator(const XnChar* strName = "XnVMessageGenerator"); 00031 virtual ~XnVMessageGenerator(); 00032 00040 XnVHandle AddListener(XnVMessageListener* pListener); 00048 XnVMessageListener* RemoveListener(XnVHandle hListener); 00056 XnVMessageListener* RemoveListener(XnVMessageListener* pListener); 00057 00063 void Generate(XnVMessage* pMessage); 00064 00068 void ClearAllQueues(); 00069 00075 const XnChar* GetGeneratorName() const; 00076 protected: 00077 XN_DECLARE_DEFAULT_HASH_DECL(XNV_NITE_API, XnUInt32, XnVMessageListener*, XnVIntMessageListenerHash); 00078 00079 void OpenNewSession(XnVMessageListener* pListener); 00080 void CloseOldSession(XnVMessageListener* pListener); 00081 00082 XnVIntMessageListenerHash m_hListeners; 00083 XnStringsHash m_Properties; // for last points 00084 XnVHandle m_hNextAvailable; 00085 00086 XnChar* m_strGeneratorName; 00087 }; 00088 00089 #endif