![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: messageCallbackManager.h,v $ $Revision: 1.4 $ $State: Exp $ 00007 *********************************************************************/ 00008 00009 #ifndef DtMessageCallbackManager_H_ 00010 #define DtMessageCallbackManager_H_ 00011 00016 00017 #include <list> 00018 #include <map> 00019 #include <vlutil/vlExceptions.h> 00020 00021 00034 template <typename T_Message, typename T_MessageKind> 00035 class DtMessageCallbackManager 00036 { 00037 public: 00038 00039 typedef void (*DtCallbackFcn)(const T_Message& msg, void* userData); 00040 00041 protected: 00042 //DDW: Would have liked to have used simple struct with named members here, 00043 //but vc7 complained about missing a == operator in list remove operation 00045 typedef std::pair<DtCallbackFcn, void*> DtCallbackInfo; 00047 typedef std::list<DtCallbackInfo> DtCallbackList; 00049 typedef std::map<T_MessageKind, DtCallbackList> DtCallbackMap; 00050 00051 public: 00052 00054 DtMessageCallbackManager(); 00055 00057 DtMessageCallbackManager(const DtMessageCallbackManager& orig); 00058 00060 ~DtMessageCallbackManager(); 00061 00063 DtMessageCallbackManager& operator=(const DtMessageCallbackManager& orig); 00064 00068 // 00070 void addMsgCallback(T_MessageKind k, 00071 DtCallbackFcn fcn, void* userData); 00072 00074 void removeMsgCallback(T_MessageKind k, 00075 DtCallbackFcn fcn, void* userData); 00076 00079 void addWildcardMsgCallback(DtCallbackFcn fcn, void* userData); 00080 00082 void removeWildcardMsgCallback(DtCallbackFcn fcn, void* userData); 00083 00085 void processMsg(const T_Message& msg) const; 00086 00088 int numCallbacks(T_MessageKind k); 00089 00090 00091 protected: 00092 00095 DtCallbackMap myCallbacks; 00096 00098 DtCallbackList myWildcardCallbacks; 00099 00100 }; 00101 00102 #include "messageCallbackManager.inl" 00103 00104 #endif 00105 00106