protected ACLMessage prepareResultNotification(ACLMessage request, ACLMessage response) { if (request.getOntology().equals("request-ids")) return handleTourGuideRequest(request); else if (request.getOntology().equals("get-item-information")) return handleProfilerRequest(request); else { ACLMessage informDone = request.createReply(); informDone.setPerformative(ACLMessage.NOT_UNDERSTOOD); return informDone; } }
@Override public void handleMessage(ACLMessage msg) { System.out.println(myAgent.getAID().getName() + " RECIEVED message: " + msg.getOntology()); if (msg != null) { Object o = null; try { o = msg.getContentObject(); if (o == null) { block(); } } catch (UnreadableException ex) { Logger.getLogger(TourGuideAgent.class.getName()).log(Level.SEVERE, null, ex); block(); } if (msg.getOntology().equalsIgnoreCase(Ontologies.PROFILER_REQUEST_TOUR_AGENT)) { UserProfile up = (UserProfile) o; tourGuide.usersLock.lock(); try { tourGuide.getUsers().put(msg.getSender(), up); } finally { tourGuide.usersLock.unlock(); } tourGuide.startTour(); } else if (msg.getOntology().equalsIgnoreCase(Ontologies.QUERY_ARTIFACTS)) { Map<String, AID> requests = tourGuide.getRequests(); final AID user = requests.get(msg.getConversationId()); List<ACLMessage> msglist = tourGuide.getResponses().get(user); msglist.add(msg); System.out.println( "added msg " + msg + " to msgList: " + tourGuide.getResponses().get(user)); requests.remove(msg.getConversationId()); } } else { System.err.println("Agent " + myAgent.getAID().getName() + " RECIEVED message: null."); block(); } myAgent.addBehaviour( new TGAMsgReceiverBehaviour(myAgent, null, deadline, getDataStore(), null)); }
@Override public boolean match(ACLMessage msg) { String ontology = msg.getOntology(); return ontology.equalsIgnoreCase(Ontologies.AUCTION_START) || ontology.equalsIgnoreCase(Ontologies.CALL_FOR_PROPOSALS) || ontology.equalsIgnoreCase(Ontologies.AUCTION_NO_BIDS) || ontology.equalsIgnoreCase(Ontologies.AUCTION_WON) || msg.getPerformative() == ACLMessage.ACCEPT_PROPOSAL || msg.getPerformative() == ACLMessage.REJECT_PROPOSAL; }
/** Looks at the message type and starts the appropriate handler */ @Override public void action() { ACLMessage msg = curator.receive(mt); if (msg != null) { String ontology = msg.getOntology(); if (ontology.equalsIgnoreCase(Ontologies.AUCTION_START)) { handleAuctionStart(msg); } else if (ontology.equalsIgnoreCase(Ontologies.CALL_FOR_PROPOSALS)) { handleCFP(msg); } else if (ontology.equalsIgnoreCase(Ontologies.AUCTION_NO_BIDS)) { handleAuctionNoBids(msg); } else if (ontology.equalsIgnoreCase(Ontologies.AUCTION_WON)) { handleAuctionWon(msg); } else if (msg.getPerformative() == ACLMessage.ACCEPT_PROPOSAL) { handleAcceptProposal(msg); } else if (msg.getPerformative() == ACLMessage.REJECT_PROPOSAL) { handleReject(msg); } } else { block(); } }
@Override public void action() { // message templte for dutch auction MessageTemplate mt = MessageTemplate.and( MessageTemplate.MatchPerformative(ACLMessage.INFORM), MessageTemplate.MatchProtocol(FIPANames.InteractionProtocol.FIPA_DUTCH_AUCTION)); msg = myAgent.receive(mt); if (msg != null) { if (msg.getPerformative() == ACLMessage.INFORM) { if (msg.getOntology().equals("AUCTION")) { if (msg.getContent().startsWith("AUCTION")) { System.out.println(myAgent.getLocalName() + ": auction has started"); // Auction with 100 as this agents highest buying price int price = 40000 + rand.nextInt(15000); myAgent.addBehaviour(new NewAuctionBehaviour(Integer.toString(price))); } else myAgent.putBack(msg); } } } }