/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package System; import Agents.Agent; import Agents.Person; import GlobalData.CTANetwork; import Messaging.Message; import Messaging.QueueUser; import java.io.Serializable; import java.util.List; /** * This class implemented as a thread will interpret the message received * */ public class ProcessReceivedMessage extends Thread implements QueueUser, Serializable { /** * */ public List<Agent> agents; /** * */ public Message message; /** * */ public ProcessReceivedMessage() { Utilities.Log.logger.info("Created Message Receiver"); } /** * */ public void run() { receivedMessage(); } /** * * @param message */ public void receivedMessageHelper(Message message) { this.message = message; } /** * */ public void receivedMessage() { //update status of the host from which message was received Utilities.Log.logger.info("PeopleCTA: ReceivedMessage"); switch (message.type) { case CTANetwork.RMQ_TYPE_STATUS_UPDATE: //Find out what type of status update it is Message statusType = (Message) message.messageObject; switch (statusType.type) { case CTANetwork.CTA_READY_FOR_NEXT_TICK: CareTakerAgent.changeCTAStatus(statusType.hostName, statusType.type); Utilities.Log.logger.info("Received Next Tick from : " + statusType.hostName + ":" + statusType.type); break; case CTANetwork.CTA_DONE_WITH_WORK: CareTakerAgent.changeCTAStatus(statusType.hostName, statusType.type); Utilities.Log.logger.info("Received Done with work from : " + statusType.hostName + ":" + statusType.type); break; case CTANetwork.CTA_SAVING_STATE: Utilities.Log.logger.info("Received state save message from " + statusType.hostName + "at tick: " + CareTakerAgent.currentTickNumber); CareTakerAgent.tickNumberForStateSave = (Integer) statusType.messageObject; CareTakerAgent.initiateStateSave = true; CareTakerAgent.changeCTAStatus(statusType.hostName, statusType.type); break; case CTANetwork.CTA_SAVED_STATE: Utilities.Log.logger.info("Received state saved message from " + statusType.hostName + "at tick: " + CareTakerAgent.currentTickNumber); CareTakerAgent.changeCTAStatus(statusType.hostName, statusType.type); break; case CTANetwork.CTA_RESTORED_STATE: Utilities.Log.logger.info("Received restored state message from " + statusType.hostName + "at tick: " + CareTakerAgent.currentTickNumber); CareTakerAgent.changeCTAStatus(statusType.hostName, statusType.type); break; // case CTANetwork.CTA_COMPLETE_EXIT: // Utilities.Log.logger.info("VehicleCTA: Done with work and Exitting....."); // changeCTAStatus(statusType.hostName, statusType.type); // break; } break; case CTANetwork.RMQ_TYPE_AGENT_DATA: List<Person> pickedUpPersonList = (List<Person>) message.messageObject; //chcek for duplicates and update the critically injured list Utilities.Log.logger.info("Received Picked up People List : " + pickedUpPersonList.size()); for (Person person : pickedUpPersonList) { if (agents.contains(person)) { agents.remove(person); } } //Utilities.Log.logger.info("Received Critically Injured People " + criticalPersonList.size() + "With values (id,value):" + criticalPersonList); break; } } }