/** * loads the net, additional routes and the detectors */ MSNet* load(OptionsCont& oc) { MSFrame::setMSGlobals(oc); MSVehicleControl* vc = 0; #ifdef HAVE_INTERNAL if (MSGlobals::gUseMesoSim) { vc = new MEVehicleControl(); } else { #endif vc = new MSVehicleControl(); #ifdef HAVE_INTERNAL } #endif MSNet* net = new MSNet(vc, new MSEventControl(), new MSEventControl(), new MSEventControl()); NLEdgeControlBuilder eb; NLDetectorBuilder db(*net); NLJunctionControlBuilder jb(*net, db); NLTriggerBuilder tb; NLHandler handler("", *net, db, tb, eb, jb); tb.setHandler(&handler); NLBuilder builder(oc, *net, eb, jb, db, handler); if (!builder.build()) { delete net; throw ProcessError(); } return net; }
/** * loads the net, additional routes and the detectors */ MSNet* load(OptionsCont& oc) { MSFrame::setMSGlobals(oc); MSVehicleControl* vc = 0; if (MSGlobals::gUseMesoSim) { vc = new MEVehicleControl(); } else { vc = new MSVehicleControl(); } MSNet* net = new MSNet(vc, new MSEventControl(), new MSEventControl(), new MSEventControl()); #ifndef NO_TRACI // need to init TraCI-Server before loading routes to catch VEHICLE_STATE_BUILT TraCIServer::openSocket(std::map<int, TraCIServer::CmdExecutor>()); #endif NLEdgeControlBuilder eb; NLDetectorBuilder db(*net); NLJunctionControlBuilder jb(*net, db); NLTriggerBuilder tb; NLHandler handler("", *net, db, tb, eb, jb); tb.setHandler(&handler); NLBuilder builder(oc, *net, eb, jb, db, handler); if (!builder.build()) { delete net; throw ProcessError(); } return net; }
MSNet* NLBuilder::init() { OptionsCont& oc = OptionsCont::getOptions(); oc.clear(); MSFrame::fillOptions(); OptionsIO::getOptions(); if (oc.processMetaOptions(OptionsIO::getArgC() < 2)) { SystemFrame::close(); return nullptr; } XMLSubSys::setValidation(oc.getString("xml-validation"), oc.getString("xml-validation.net")); if (!MSFrame::checkOptions()) { throw ProcessError(); } MsgHandler::initOutputOptions(); RandHelper::initRandGlobal(); RandHelper::initRandGlobal(MSRouteHandler::getParsingRNG()); RandHelper::initRandGlobal(MSDevice::getEquipmentRNG()); MSFrame::setMSGlobals(oc); MSVehicleControl* vc = 0; if (MSGlobals::gUseMesoSim) { vc = new MEVehicleControl(); } else { vc = new MSVehicleControl(); } MSNet* net = new MSNet(vc, new MSEventControl(), new MSEventControl(), new MSEventControl()); // need to init TraCI-Server before loading routes to catch VEHICLE_STATE_BUILT TraCIServer::openSocket(std::map<int, TraCIServer::CmdExecutor>()); NLEdgeControlBuilder eb; NLDetectorBuilder db(*net); NLJunctionControlBuilder jb(*net, db); NLTriggerBuilder tb; NLHandler handler("", *net, db, tb, eb, jb); tb.setHandler(&handler); NLBuilder builder(oc, *net, eb, jb, db, handler); MsgHandler::getErrorInstance()->clear(); MsgHandler::getWarningInstance()->clear(); MsgHandler::getMessageInstance()->clear(); if (builder.build()) { // preload the routes especially for TraCI net->loadRoutes(); return net; } delete net; throw ProcessError(); }