![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: msgExec.h,v $ $Revision: 1.13 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00017 00018 00019 #ifndef DtMessageExecutive_H_ 00020 #define DtMessageExecutive_H_ 00021 00022 #include <vlutil/vlList.h> 00023 #include "vrfmsgs/simMsg.h" 00024 #include <vlutil/vlHashlist.h> 00025 #include <vlutil/vlTime.h> 00026 00027 class DtMessageCallbackInfo; 00028 00030 typedef void (*DtMessageCallbackFcn)(DtSimMessage * msg, void * usr); 00031 00041 00042 #include "vrfmsgs/vrfmsgsDefines.h" 00043 class DT_DLL_vrfmsgs DtMessageExecutive 00044 { 00045 public: 00046 00048 DtMessageExecutive(); 00049 00051 virtual ~DtMessageExecutive(); 00052 00054 DtMessageExecutive(const DtMessageExecutive& orig); 00055 00057 DtMessageExecutive& operator=(const DtMessageExecutive& orig); 00058 00061 virtual void addMessageCallback(int type, DtMessageCallbackFcn fcn, 00062 void* usrData); 00063 00064 virtual void removeMessageCallback(int type, DtMessageCallbackFcn fcn, 00065 void* usrData); 00066 00068 virtual void addSimMessageCallback(DtMessageCallbackFcn fcn, 00069 void* usrData); 00070 00071 virtual void removeSimMessageCallback(DtMessageCallbackFcn fcn, 00072 void* usrData); 00073 00075 virtual void processMessage(const DtSimMessage& msg) const; 00076 00078 virtual int numCallbacks(int type) const; 00079 00083 virtual int indexType(const DtSimMessage & message) const = 0; 00084 00085 public: 00087 static unsigned generateMessageId(); 00088 00089 00093 static int maximumContentSize(); 00094 static void setMaximumContentSize(int sz); 00096 00099 static unsigned maximumSignalDataSize(); 00100 00101 static DtTime timeoutCheckInterval(); 00102 static void setTimeoutCheckInterval(DtTime nSecs); 00103 static DtTime timeoutDuration(); 00104 static void setTimeoutDuration(DtTime nSecs); 00105 00106 protected: 00107 00109 virtual void addMessageCallback(int type, DtMessageCallbackInfo* info); 00110 00111 virtual void removeMessageCallback(int, const DtMessageCallbackInfo& info); 00112 00115 void emptyList(); 00116 00119 void copyList(const DtMessageExecutive& orig); 00120 00121 protected: 00122 00123 DtList mySimMsgCbs; 00124 00127 DtHashlist myListOfCbLists; 00128 00129 static int theMaximumContentSize; 00130 static unsigned theMaxSignalDataSize; 00131 00132 static unsigned theSplitId; 00133 00134 static DtTime theTimeoutCheckInterval; 00135 static DtTime theTimeoutDuration; 00136 }; 00137 00138 #endif