private RouteReply sendRREP(RouteRequest rreq) throws NoSuchRouteException, InvalidRouteException { if (iAmTheDestination(rreq)) { if (node.getCurrentSequenceNumber() + 1 == rreq.getDestinationSequenceNumber()) { node.getNextSequenceNumber(); } return new RouteReply( rreq.getDestinationAddress(), node.getCurrentSequenceNumber(), rreq.getSourceAddress(), rreq.getSourceSequenceNumber()); } else { ForwardRouteEntry entry = routingTable.getForwardEntry(rreq.getDestinationAddress()); int destinationSequenceNumber = entry.getDestinationSequenceNumber(); sendGratuitousReply(rreq, destinationSequenceNumber); int hops = entry.getNumberHops(); long lifetime = entry.getAlivetimeLeft(); return new RouteReply( rreq.getDestinationAddress(), destinationSequenceNumber, rreq.getSourceAddress(), rreq.getSourceSequenceNumber(), hops, lifetime); } }
private boolean sendRREQ(String destinationAddress, int lastDestinationSequenceNumber) { node.getNextSequenceNumber(); node.getNextBroadcastID(); RouteRequest routeRequest = new RouteRequest( node.getCurrentSequenceNumber(), node.getCurrentBroadcastID(), destinationAddress, lastDestinationSequenceNumber); if (routingTable.addRouteRequest(routeRequest, true)) { getSender().queueRoutingMessage(routeRequest); return true; } return false; }