![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999-2001 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: splitMessageCollector.h,v $ $Revision: 1.2 $ $State: Exp $ 00007 *******************************************************************************/ 00011 00014 00015 #ifndef DtSplitMessageCollector_H_ 00016 #define DtSplitMessageCollector_H_ 00017 00018 #include "vrfMsgTransport/vrfMsgTransportDefines.h" 00019 00020 #include <map> 00021 00022 #include <vlpi/simulationAddress.h> 00023 #include <vrfutil/splitContentTimer.h> 00024 00025 class DtVrfMessageInterface; 00026 class DtSimInterfaceMessage; 00027 class DtSplitMessageKey; 00028 00030 class DT_DLL_vrfMsgTransport DtSplitMessageCollector 00031 { 00032 public: 00033 typedef std::map<DtSplitMessageKey, std::map<int, DtSimInterfaceMessage> > DtSplitMap; 00034 00035 public: 00036 00038 DtSplitMessageCollector(); 00039 00041 virtual ~DtSplitMessageCollector(); 00042 00043 virtual void processSplitContentTimeout(const DtSplitMessageKey& key); 00044 00047 virtual bool reassembleMessage(const DtSplitMessageKey& key, 00048 int nOriginalContentType, 00049 DtVrfMessageInterface& vrfMsgIf); 00050 00058 virtual bool receiveMessage( 00059 const DtSimInterfaceMessage& msg, 00060 DtVrfMessageInterface& vrfMsgIf); 00061 00063 virtual void timeoutOldSplits(); 00064 00065 virtual const DtSplitContentTimer& splitContentTimer() const; 00066 virtual DtSplitContentTimer& splitContentTimer(); 00067 00068 static void splitContentTimeoutCbk(const DtSplitMessageKey& key, void *pUsr); 00069 00070 protected: 00071 00074 DtSplitMessageCollector(const DtSplitMessageCollector& orig); 00075 00076 const DtSplitMessageCollector& operator=( 00077 const DtSplitMessageCollector& orig); 00079 00080 protected: 00081 DtSplitMap mySplitMessages; 00082 DtSplitContentTimer mySplitContentTimer; 00083 }; 00084 00085 inline const DtSplitContentTimer& DtSplitMessageCollector::splitContentTimer() const 00086 { 00087 return (mySplitContentTimer); 00088 } 00089 00090 inline DtSplitContentTimer& DtSplitMessageCollector::splitContentTimer() 00091 { 00092 return (mySplitContentTimer); 00093 } 00094 00095 #endif 00096 00097