/************************************************************************************ * Copyright (C) 2008 by Politehnica University of Bucharest and Rutgers University * All rights reserved. * Refer to LICENSE for terms and conditions of use. ***********************************************************************************/ package vnsim.vehicular.routePlan.infrastructureRouted; import java.util.StringTokenizer; import vnsim.vehicular.simulator.CarInstance; import vnsim.vehicular.simulator.RouteSegment; public class InfrastructureReply { String message; CarInstance carReference; public InfrastructureReply(String msg, CarInstance car) { this.message = msg; this.carReference = car; } public boolean analizeMessage() { System.out.println("CAR "+this.carReference.ID+" got routing reply "+this.message); int i, j, k; StringTokenizer st = null; st = new StringTokenizer(this.message, " \n"); String type = st.nextToken(); if (type.equals("DR")) { // System.out.println("Car "+carReceivingMsg.ID+" got a message that is not mine and not yet answered"+this.msg); return false; } if (carReference.routeIndex < carReference.route.length - 1) { // System.out.println(" carReceivingMsg "+carReceivingMsg.ID+" got something old"); return false; } int rdNext, p1Next, p2Next; int semR, semP1, semP2, destR, destP; try { if ((new Integer(st.nextToken())).intValue() != carReference.ID) { //System.out.println("Car "+carReceivingMsg.ID+" got a message that is not mine"); return false; } semR = new Integer(st.nextToken()).intValue(); semP1 = new Integer(st.nextToken()).intValue(); semP2 = new Integer(st.nextToken()).intValue(); destR = new Integer(st.nextToken()).intValue(); destP = new Integer(st.nextToken()).intValue(); } catch (Exception e) { System.out.println("Car " + carReference.ID + " got a message that has a wrong format"); return false; } try { //System.out.println("***********************************************************************"); rdNext = (new Integer(st.nextToken())).intValue(); p1Next = (new Integer(st.nextToken())).intValue(); p2Next = (new Integer(st.nextToken())).intValue(); if ((carReference.route[carReference.routeIndex].roadIndex != semR) || (carReference.route[carReference.routeIndex].pt1 != semP1) || (carReference.route[carReference.routeIndex].pt2 != semP2)) { //System.out.println("carReceivingMsg "+ carReceivingMsg.ID+"un raspuns de la alt semafor "); return false; } // boolean found=false; // for(j=0;j 2.0) { System.out.println("l-am prins"); } } // carReceivingMsg.pw.println("reply "+this.msg); // carReceivingMsg.pw.flush(); RouteSegment[] tp = new RouteSegment[this.carReference.route.length + 1]; for (j = 0; j < this.carReference.route.length; j++) { tp[j] = this.carReference.route[j]; } tp[j] = new RouteSegment((short) rdNext, (short) p1Next, (short) p2Next); carReference.route = tp; // System.out.println("\ncar "+carReceivingMsg.ID+" got route for reply "+this.msg); // for(i=0;i