Go to the documentation of this file.00001
00002
00003
00004
00005
00008
00009 #ifndef lgrDisDatabasePrinter_H_
00010 #define lgrDisDatabasePrinter_H_
00011
00012 #if DtDIS
00013
00014 #include "lgrSqlExporter.h"
00015 #include "lgrDatabasePrinter.h"
00016 #include <vlutil/vlString.h>
00017
00018 #include <map>
00019 #include <vlpi/disEnums.h>
00020
00021 class DtDatabaseInterface;
00022 class DtOutputStream;
00023 class DtPduFactory;
00024
00025 namespace MAKLogger
00026 {
00027
00028 class DtLgrPduDatabaseEncoder;
00029 class DtLgrCheckpointTableFactory;
00030 class DtLgrDisObjectTableFactory;
00031 class DtPacket;
00032 class DtConstLgrDisMessage;
00033
00034 class DT_DLL_SQLEXPORTER DtLgrDisDatabasePrinter : public DtLgrDatabasePrinter
00035 {
00036 public:
00037
00038
00040 DtLgrDisDatabasePrinter(DtOutputStream& log,
00041 DtDatabaseInterface& databaseInterface);
00042
00044 virtual ~DtLgrDisDatabasePrinter();
00045
00046 private:
00048 DtLgrDisDatabasePrinter(const DtLgrDisDatabasePrinter&);
00049 DtLgrDisDatabasePrinter& operator=(const DtLgrDisDatabasePrinter&);
00051
00052 public:
00053
00055 virtual void setGenerateInstanceTable( bool generate);
00056
00058 virtual void setGenerateCheckpointTable( bool generate);
00059
00061 virtual void createDefaultTables();
00062
00064 virtual void printCheckpoint(const MAKLogger::DtPacket& packet);
00065
00067 virtual void printPDU(const MAKLogger::DtPacket& packet);
00068
00069 protected:
00070
00072 virtual void printInstance( MAKLogger::DtConstLgrDisMessage &disMsg,
00073 const MAKLogger::DtPacket &packet );
00074
00075 struct PduCacheEntry
00076 {
00077 DtLgrDatabasePrinter::TableList tables;
00078 const DtLgrPduDatabaseEncoder* encoder;
00079 };
00080
00081 struct InstanceData
00082 {
00083 DtString id;
00084 DtString type;
00085 double lastTime;
00086 bool finalPduSet;
00087 };
00088
00089 typedef std::map<DtU64,InstanceData> InstanceMap;
00090
00091 typedef std::map<DtPduKind,PduCacheEntry> PduCache;
00092
00093 bool myGenerateInstanceTable;
00094 bool myGenerateCheckpointTable;
00095 PduCache myPduCache;
00096 DtPduFactory* myPduFactory;
00097 DtLgrDisObjectTableFactory* myObjectTableFac;
00098 DtLgrCheckpointTableFactory* myCheckpointTableFac;
00099 InstanceMap myObjectInstances;
00100 };
00101
00102 }
00103
00104 #endif
00105
00106 #endif