#if DtDIS
#include <vl/disPduFactory.h>
#include <vl/entityStatePdu.h>
#endif
#if DtHLA
#include <vl/exerciseConn.h>
#include <vl/exerciseConnInitializerHLA.h>
#include <vl/interaction.h>
#include <vlutil/vlRtiMismatchException.h>
#endif
#include <vlutil/vlMiniDumper.h>
#include <cmdLine/cmdLine.h>
using namespace MAKLogger;
#if DtDIS
{
if(aPdu)
{
DtNetPacket* netPacket = reinterpret_cast<DtNetPacket*>(aPdu->packet());
int packetSize = netPacket->DtLength;
memcpy(packet->
data(),netPacket,packetSize);
messagesToWrite.
add(packet);
}
}
{
try
{
DtLgrDisRecordFile* file = DtLgrDisRecordFile::create(filename, description);
return DtLoggerFileWriter::create(ioInfo,file);
}
{
DtInfo << output << std::endl;
return 0;
}
}
#endif
#if DtHLA
#if DtHLA_1516
typedef std::map<RTI::ObjectInstanceHandle,DtLgrHlaHandle> ObjectInstanceMap;
#else
typedef std::map<RTI::ObjectHandle,DtLgrHlaHandle> ObjectInstanceMap;
#endif
ObjectInstanceMap theObjectInstanceMap;
{
#if DtHLA_1516
interDsc = theFom->interDesc(interaction->interactionClassHandle());
if(!interDsc)
{
DtTHROW_NEW(DtInvalidFom,"Unknown interaction class handle.");
}
interaction->tag().size());
#else
#endif
return packet;
}
{
ObjectInstanceMap::iterator handleIter = theObjectInstanceMap.find(msg.objectId());
if(handleIter == theObjectInstanceMap.end())
{
theObjectInstanceMap[msg.objectId()] = ++theFreeId;
}
#if DtHLA_1516
if(!objDesc)
{
"Unable to find class handle of object instance.");
return 0;
}
objDesc->handle(), mapRef,obj->name(),tagRef);
#else
obj->objectClassHandle(), mapRef,obj->name(),tagRef);
#endif
return update;
}
{
if(packet)
{
messagesToWrite.
add(packet);
}
}
{
try
{
return DtLoggerFileWriter::create(ioInfo,file);
}
{
DtInfo << output << std::endl;
return 0;
}
}
#endif
{
getMessages(aBufferOfMessages);
aBufferOfMessages.
clear();
}
int writeFile(int argc,char** argv)
{
DtCmdLine::UnlabeledValueArg<DtString> filenameArg("Filename","The name of the logger file to write.","","string");
cmdLine.add(&filenameArg);
cmdLine.parse(argc,argv);
#if !DtHLA
DtLgrDisFileFormats::registerFormats();
#else
DtExerciseConnInitializer exConnInit;
#if DtHLA_1516_EVOLVED
exConnInit.setFedFileName("VR-Link_evolved.xml");
#elif DtHLA_1516
exConnInit.setFedFileName("VR-Link.xml");
#else
exConnInit.setFedFileName("VR-Link.fed");
#endif
try
{
}
catch( DtVlRtiMismatchException )
{
DtFatal << "Mismatching RTI compiler Version. Please reconfigure your environment" << std::endl;
return -1;
}
theFom = DtLgrOnlineFomDesc::create(theExerciseConn);
#endif
DtString filename(filenameArg.getValue());
if(writer)
{
writer->activate(0);
writeData(writer);
writer->deactivate();
delete writer;
}
#if DtHLA
DtDELETE(theExerciseConn);
#endif
return 0;
}
int main(int argc,char** argv)
{
DtINIT_MINIDUMPER( "WriteFile" );
return writeFile(argc,argv);
}