/** * @RDE_HEADER@ * main for SituationReplay * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2016-01-13 */ #include #include #include "dds_handler.h" #include "main_handler.h" #include "logger.h" #include "settings.h" class CmdLineParser : public LtsCommandLineParser::LtsCommandLineParser { public: CmdLineParser() : LtsCommandLineParser(ProvideCommandLineParameterOptions(CreateDomainIdFromIp|DomainId|ExerciseId)) { addOption({ QStringList() << QLatin1String("input"), QLatin1String("information for the input side (domainId,exerciseId,"), QLatin1String("1,42,tcpv4lan://srv:port"), QString() }); addOption({ QStringList() << QLatin1String("output"), QLatin1String("information for the output side (domainId,replayId,"), QLatin1String("2,1,tcpv4lan://srv:port"), QString() }); } QString inputParams() const { return isSet(QLatin1String("input")) ? value(QLatin1String("input")) : QString(); } QString outputParams() const { return isSet(QLatin1String("output")) ? value(QLatin1String("output")) : QString(); } }; int main(int argc, char **argv) { NGLCoreApplication app(argc, argv); CmdLineParser options; if (!options.init()) return -1; SituationReplay::ConnectionParams input, output; if (!SituationReplay::DdsHandler::parseOptions(options.inputParams(), input)) { app.createLogger("SRP", options.exerciseId()); ERROR_LOG(app.baseLogger()) << "Can not parse input params: '" << options.inputParams() << "'"; return -2; } if (!SituationReplay::DdsHandler::parseOptions(options.outputParams(), output)) { app.createLogger("SRP", options.exerciseId()); ERROR_LOG(app.baseLogger()) << "Can not parse output params: '" << options.outputParams() << "'"; return -3; } //set output exercise id = input exercise id input.exerciseId = input.partitionId; output.exerciseId = input.partitionId; app.createLogger("SRP", input.partitionId, output.partitionId); SituationReplay::Settings::setIniFile(options.iniFile()); int iRet = -4; { std::unique_ptr mainHandler(new SituationReplay::MainHandler); NOTICE_LOG(app.baseLogger()) << "Input domainId: " << input.domainId << ", partition id: " << input.partitionId << ", exercise id: " << input.exerciseId << (input.discoveryPeer.isEmpty() ? QString() : QStringLiteral(", discovery: ") + input.discoveryPeer.toString()); NOTICE_LOG(app.baseLogger()) << "Output domainId: " << output.domainId << ", replayId: " << output.partitionId << ", exerciseid: " << output.exerciseId << (output.discoveryPeer.isEmpty() ? QString() : QStringLiteral(", discovery: ") + output.discoveryPeer.toString()); if (!mainHandler->init(input, output)) return iRet; STARTUP_LOG(app.baseLogger()); iRet = app.exec(); SHUTDOWN_LOG(app.baseLogger()); } return iRet; }