00001 /******************************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00009 00010 #if DtHLA 00011 00012 #ifndef lgrHlaPacketPrinter_H_ 00013 #define lgrHlaPacketPrinter_H_ 00014 00015 #include "lgrDump.h" 00016 00017 #include <lgrPacketPrinter.h> 00018 #include <hlaMessageFactory.h> 00019 #include <messageBuffer.h> 00020 00021 class DtInteractionFactory; 00022 namespace MAKLogger 00023 { 00024 class DtBaseFomDesc; 00025 class DtPacket; 00026 class DtLogger; 00027 00029 class DT_DLL_LGRDUMP DtLgrHlaPacketPrinter : public DtLgrPacketPrinter 00030 { 00031 public: 00032 00034 DT_VIRTUAL_CTR(DtLgrHlaPacketPrinter,(DtLogger& logger,bool raw)) 00035 00036 00037 DT_VIRTUAL_BASE_CTR(DtLgrPacketPrinter,(DtLogger& logger,bool raw)) 00038 00039 00040 virtual ~DtLgrHlaPacketPrinter(); 00041 00042 private: 00044 DtLgrHlaPacketPrinter(const DtLgrHlaPacketPrinter&); 00046 DtLgrHlaPacketPrinter& operator=(const DtLgrHlaPacketPrinter&); 00047 00048 public: 00049 00051 virtual void beginPrinting(const DtMessageIOInfo* info, 00052 const DtMessageInput* msgInput, const DtString& destination); 00053 00055 virtual void printPacket( const DtPacket& packet ); 00056 00058 virtual void endPrinting(); 00059 00060 protected: 00061 00063 std::ofstream& outputStream(); 00064 00066 virtual void printPacketHeader(const DtPacket& packet); 00067 00069 virtual void printPacketTail(const DtPacket& packet); 00070 00072 void printOtherPacket(const DtPacket& packet); 00073 00075 void printFomPacket(const DtPacket& packet); 00076 00078 void printConfigPacket(const DtPacket& packet); 00079 00081 void printDateTimePacket(const DtPacket& packet); 00082 00084 void printCheckpointPacket(const DtPacket& packet); 00085 00087 void printIndexTablePacket(const DtPacket& packet); 00088 00090 void printRecordingDataPacket(const DtPacket& packet); 00091 00093 void printEntityTablePacket(const DtPacket& packet); 00094 00096 void printRegionDescriptorSet(const DtRegionDescSet& regionSet); 00097 00099 void printInteractionPacket(const DtPacket& packet); 00100 00102 void printUpdatePacket(const DtPacket& packet); 00103 00105 void printRemovalPacket( const DtPacket& packet ); 00106 00108 void printPausePacket(const DtPacket& packet); 00109 00111 void printUnpausePacket(const DtPacket& packet); 00112 00114 typedef void (DtLgrHlaPacketPrinter::*PacketPrintFunction)(const DtPacket&); 00116 typedef std::map<DtPacket::DtPacketType,PacketPrintFunction> PrintFunctionMap; 00117 00118 protected: 00119 00121 int myPacketCount; 00122 00124 int myCheckpointCount; 00125 00127 int myInteractionCount; 00128 00130 int myUpdateCount; 00131 00133 int myRemovalCount; 00134 00136 bool myPrintRawData; 00137 00139 PrintFunctionMap myPrintFunctionMap; 00140 00142 std::ofstream* myOutputFile; 00143 00145 DtLogger* myLogger; 00146 00148 DtBaseFomDesc* myOutputFom; 00149 00151 DtTime myFileDateTime; 00152 00154 DtTime myUnpauseTime; 00155 00157 DtMessageBuffer myEndMetadata; 00158 00159 }; 00160 } 00161 00162 #endif 00163 #endif