private MessageTemplate getMessageFilter() { Seller mySeller = (Seller) super.myAgent; return MessageTemplate.and( this.myFSM.getMessageFilter(), MessageTemplate.and( MessageTemplate.MatchContent(String.valueOf(mySeller.getCurrentPrice())), MessageTemplate.MatchPerformative(FishMarketProtocol.Performatives.TO_BID))); }
@Override public void action() { // System.out.println(getName() + ": state=Waiting..."); newAuctionStarted = false; MessageTemplate template = MessageTemplate.MatchContent("inform-start-of-auction"); ACLMessage message = receive(template); if (message != null) { marketAgent = message.getSender(); newAuctionStarted = true; convID = message.getConversationId(); // System.out.println(getName() + ": Received Auction start message!"); } else block(); }
@Override public void action() { // System.out.println(getName() + ": state=Handle_CFP"); informed = false; MessageTemplate template_cfp = MessageTemplate.MatchPerformative(ACLMessage.CFP); MessageTemplate template_nobids = MessageTemplate.MatchContent("no-bids"); ACLMessage cfp = receive(template_cfp); ACLMessage nobids = receive(template_nobids); if (cfp != null && cfp.getConversationId().equals(convID)) { // CFP received try { receivedItem = (Artifact) cfp.getContentObject(); // System.out.println(getName() + ": Received CFP - " + receivedItem.getName()); ACLMessage proposal = new ACLMessage(ACLMessage.PROPOSE); proposal.addReceiver(marketAgent); proposal.setConversationId(convID); if (acceptOffer(receivedItem)) proposal.setContent("yes"); else proposal.setContent("no"); send(proposal); // System.out.println(getName() + ": Proposal sent to Auctioneer. Proposal= " + // proposal.getContent()); } catch (UnreadableException e) { ACLMessage notUnderstood = new ACLMessage(ACLMessage.NOT_UNDERSTOOD); notUnderstood.addReceiver(marketAgent); notUnderstood.setConversationId(convID); send(notUnderstood); } informed = true; status = CFP_RECEIVED; } else if (nobids != null && nobids.getConversationId().equals(convID)) { // System.out.println(getName() + ": No-bids received..."); informed = true; status = NO_BIDS; } else block(); }