#if DtDIS
#include <vl/disPduFactory.h>
#endif
#if DtHLA
#include <vl/exerciseConn.h>
#include <vl/hExConnInit.h>
#include <vl/hInterFactory.h>
#include <vl/hInteraction.h>
#include <vlutil/vlRtiMismatchException.h>
#endif
#include <iostream>
#include <cmdLine/cmdLine.h>
using namespace MAKLogger;
bool keyCheck(const char* keysToCheck)
{
if(DtKbHit())
{
int c = DtGetCh();
return strchr(keysToCheck,c) != 0;
}
return false;
}
#if DtDIS
void readPacket(
const DtPacket* packet)
{
static DtDisPduFactory factory;
{
DtPdu* Pdu = factory.createPdu (
reinterpret_cast<const DtNetPacket*>(packet->
data()),
reinterpret_cast<DtBufferPtr>(const_cast<char*>(packet->
data())));
Pdu->print();
delete Pdu;
}
}
{
try
{
}
{
DtInfo << output << std::endl;
return 0;
}
}
#endif
#if DtHLA
DtInteractionFactory* theInteractionFactory;
DtLgrOnlineFomDesc* theOnlineFom;
DtBaseFomDesc* theFileFom;
DtLgrHlaMessageState* theMessageState;
void readPacket(
const DtPacket* packet)
{
DtConstLgrHlaMessage hlaMessage(packet);
if(hlaMessage.isInteraction())
{
theInteractionFactory,
*theOnlineFom);
inter->print();
}
}
{
try
{
DtLgrHlaPlaybackFile* file = DtLgrHlaPlaybackFile::create(filename);
DtLgrHlaMessageIOInfo* ioInfo = DtLgrHlaMessageIOInfo::create(
}
{
DtInfo << output << std::endl;
return 0;
}
}
#endif
int readFile(int argc,char** argv)
{
DtCmdLine::UnlabeledValueArg<DtString> filenameArg("Filename","The name of the logger file to read.","","string");
cmdLine.add(&filenameArg);
cmdLine.parse(argc,argv);
#if !DtHLA
#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;
}
theInteractionFactory = theExerciseConn->interactionFactory();
theOnlineFom = DtLgrOnlineFomDesc::create(theExerciseConn);
DtLgrHlaFileFormats::registerFormats();
#endif
DtString filename(filenameArg.getValue());
if(!reader)
{
DtInfo << "Unable to open file: " << filename << " for reading." << std::endl;
return 1;
}
else
{
DtInfo << "Opened file: " << filename << " for reading." << std::endl;
}
#if DtHLA
theMessageState = new DtLgrHlaMessageState();
theMessageState->setInputInfo(reader->info());
theMessageState->setOutputInfo(DtLgrHlaMessageIOInfo::create(
#endif
reader->startReadMessages(lastTime);
bool quit = false;
while(!quit && reader->lastReadTime() != lastTime)
{
if (keyCheck("q\r"))
{
quit = true;
break;
}
reader->getNextMessages(buffer);
if(buffer.
size() == 0)
break;
#if DtHLA
theMessageState->modifyMessages(buffer);
#endif
DtMessageBuffer::PacketList::iterator packetIterator;
for(packetIterator = buffer.
begin(); packetIterator != buffer.
end();++packetIterator)
{
static int packetCount = 0;
DtInfo <<
"***********************************************" << std::endl <<
"* Packet #" << ++packetCount <<
" Type = " << packet->
type() <<
readPacket(packet);
if (keyCheck("q\r"))
{
quit = true;
break;
}
}
}
delete reader;
#if DtHLA
DtDELETE(theExerciseConn);
#endif
return 0;
}
int main(int argc,char** argv)
{
return readFile(argc,argv);
}