/** * Section 5.4.1 page 102 * * **/ import jade.core.Agent; import jade.core.behaviours.*; import jade.lang.acl.*; import jade.proto.*; public class CFPAgent extends Agent { public void setup() { final MessageTemplate template = MessageTemplate.and(MessageTemplate.MatchProtocol("fipa-contract-net"), MessageTemplate.MatchPerformative(ACLMessage.CFP) ); addBehaviour(new CyclicBehaviour(this) { public void action() { ACLMessage cfp = myAgent.receive(template); if (cfp != null) { myAgent.addBehaviour(new SSContractNetResponder(myAgent, cfp) { // Redefine callback methods to implement domain-dependent // logic } ); } else { block(); } } } ); } }