void Nfdc::ribRegisterPrefix() { m_name = m_commandLineArguments[0]; ControlParameters parameters; parameters .setName(m_name) .setCost(m_cost) .setFlags(m_flags) .setOrigin(m_origin); if (m_expires != DEFAULT_EXPIRATION_PERIOD) parameters.setExpirationPeriod(m_expires); if (!isValidUri(m_commandLineArguments[1])) { try { //So the uri is not valid, may be a faceId is provided. m_faceId = boost::lexical_cast<int>(m_commandLineArguments[1]); } catch (const std::exception& e) { std::cerr << "No valid faceUri or faceId is provided"<< std::endl; return; } parameters.setFaceId(m_faceId); ribRegisterPrefix(parameters); } else { ControlParameters faceParameters; faceParameters.setUri(m_commandLineArguments[1]); m_controller.start<FaceCreateCommand>(faceParameters, bind(&Nfdc::ribRegisterPrefix, this, _1), bind(&Nfdc::onError, this, _1, _2, "Face creation failed")); } }
void Nfdc::fibAddNextHop() { m_name = m_commandLineArguments[0]; ControlParameters parameters; parameters .setName(m_name) .setCost(m_cost); if (!isValidUri(m_commandLineArguments[1])) { try { //So the uri is not valid, may be a faceId is provided. m_faceId = boost::lexical_cast<int>(m_commandLineArguments[1]); } catch (const std::exception& e) { std::cerr << "No valid faceUri or faceId is provided"<< std::endl; return; } parameters.setFaceId(m_faceId); fibAddNextHop(parameters); } else { ControlParameters faceParameters; faceParameters.setUri(m_commandLineArguments[1]); m_controller.start<FaceCreateCommand>(faceParameters, bind(&Nfdc::fibAddNextHop, this, _1), bind(&Nfdc::onError, this, _1, _2, "Face creation failed")); } }
void Nfdc::faceCreate() { if (!isValidUri(m_commandLineArguments[0])) throw Error("invalid uri format"); ControlParameters parameters; parameters.setUri(m_commandLineArguments[0]); m_controller.start<FaceCreateCommand>(parameters, bind(&Nfdc::onSuccess, this, _1, "Face creation succeeded"), bind(&Nfdc::onError, this, _1, _2, "Face creation failed")); }
static void validateUri(MprTestGroup *gp) { assert(isValidUri(gp, "", "")); assert(isValidUri(gp, "/", "/")); assert(isValidUri(gp, "/index.html", "/index.html")); assert(isValidUri(gp, "/a/index.html", "/a/index.html")); assert(isValidUri(gp, "..", "")); assert(isValidUri(gp, "../", "")); assert(isValidUri(gp, "/..", "")); assert(isValidUri(gp, "/a/..", "/")); assert(isValidUri(gp, "/a/../", "/")); assert(isValidUri(gp, "/a/../b/..", "/")); assert(isValidUri(gp, "../a/b/..", "a/")); assert(isValidUri(gp, "./", "")); assert(isValidUri(gp, "./.", "")); assert(isValidUri(gp, "././", "")); assert(isValidUri(gp, "/a/./", "/a/")); assert(isValidUri(gp, "/a/./.", "/a/")); assert(isValidUri(gp, "/a/././", "/a/")); assert(isValidUri(gp, "/a/.", "/a/")); assert(isValidUri(gp, "/*a////b/", "/*a/b/")); assert(isValidUri(gp, "/*a/////b/", "/*a/b/")); #if BLD_WIN_LIKE || NW || OS2 assert(isValidUri(gp, "\\a\\b\\", "/a/b/")); #else assert(isValidUri(gp, "\\a\\b\\", "\\a\\b\\")); #endif }