コード例 #1
0
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());
}
コード例 #2
0
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());
}