bool RouteTable::addRoute(const Route& route, IValidator* validator) { const State* fromState = route.fromState(); const State* toState = route.toState(); if (!fromState) { std::cout << "state \"" << fromState << "\" doesn't exists!" << std::endl; return false; } if (!toState) { std::cout << "state \"" << toState << "\" doesn't exists!" << std::endl; return false; } if (mapRouteToValidator.find(route) != mapRouteToValidator.end()) { std::cout << "Route \"" << route << "\" already exists!" << std::endl; return false; } // 1. add route to validator mapRouteToValidator[route] = validator; mapFromStateToToStates[fromState->name()].insert(toState->name()); mapToStateToFromStates[toState->name()].insert(fromState->name()); }
bool RouteTable::delRoute(const Route& route) { if (mapRouteToValidator.find(route) == mapRouteToValidator.end()) { std::cout << "Route \"" << route << "\" is not in route table!" << std::endl; return false; } mapRouteToValidator.erase(route); const State* fromState = route.fromState(); const State* toState = route.toState(); mapFromStateToToStates[fromState->name()].erase(toState->name()); mapToStateToFromStates[toState->name()].erase(fromState->name()); }