Java源码示例:jade.core.AID
示例1
@Override
public void action() {
switch (status) {
case ASK:
ACLMessage message = new ACLMessage(ACLMessage.REQUEST);
message.setConversationId(String.valueOf(System.currentTimeMillis()));
message.addReceiver(new AID(MobileAgent.NAME, AID.ISLOCALNAME));
template = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.AGREE),
MessageTemplate.MatchConversationId(message.getConversationId()));
send(message);
status = RESPONSE;
break;
case RESPONSE:
ACLMessage receivedMessage = receive(template);
if (receivedMessage != null) {
handleRawData(receivedMessage.getContent());
} else {
block();
}
break;
}
}
示例2
@Override
public void action() {
switch (status) {
case ASK:
ACLMessage message = new ACLMessage(ACLMessage.CANCEL);
message.setConversationId(String.valueOf(System.currentTimeMillis()));
message.addReceiver(new AID(MobileAgent.NAME, AID.ISLOCALNAME));
template = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.AGREE),
MessageTemplate.MatchConversationId(message.getConversationId()));
send(message);
status = RESPONSE;
break;
case RESPONSE:
ACLMessage receivedMessage = receive(template);
if (receivedMessage != null) {
handleAfterMoving();
} else {
block();
}
break;
}
}
示例3
public void action() {
ResultsAgent a = (ResultsAgent)myAgent;
// Send result before closing down
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.setSender(a.getAID());
msg.addReceiver(new AID(SendTo, false));
try {
Object[] oMsg=new Object[3];
oMsg[0] = ID;
oMsg[1] = bText1;
oMsg[2] = bText2;
msg.setContentObject(oMsg);
} catch (IOException ex) {
System.err.println("Cannot add result to message. Sending empty message.");
ex.printStackTrace(System.err);
}
a.send(msg);
}
示例4
public void action() {
ResultsAgent a = (ResultsAgent)myAgent;
// Send result before closing down
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.setSender(a.getAID());
msg.addReceiver(new AID(SendTo, false));
try {
Object[] oMsg=new Object[3];
oMsg[0] = ID;
oMsg[1] = bText1;
oMsg[2] = bText2;
msg.setContentObject(oMsg);
} catch (IOException ex) {
System.err.println("Cannot add result to message. Sending empty message.");
ex.printStackTrace(System.err);
}
a.send(msg);
}
示例5
public void informAgsEnvironmentChanged(Collection<String> agentsToNotify) {
try {
if (agentsToNotify == null) {
informAgsEnvironmentChanged();
} else {
ACLMessage m = new ACLMessage(ACLMessage.INFORM);
m.setContent("environmentChanged");
for (String ag: agentsToNotify) {
m.addReceiver(new AID(ag, AID.ISLOCALNAME));
}
send(m);
}
} catch (Exception e) {
logger.log(Level.SEVERE, "Error sending notifyEvents ", e);
}
}
示例6
private AID getEnvironmentAg() {
// get the name of the environment
if (!consultEnv) {
DFAgentDescription template = new DFAgentDescription();
ServiceDescription sd = new ServiceDescription();
sd.setType("jason");
sd.setName(RunJadeMAS.environmentName);
template.addServices(sd);
try {
DFAgentDescription[] ans = DFService.search(jadeAg, template);
if (ans.length > 0) {
environmentAID = ans[0].getName();
}
} catch (Exception e) {
logger.log(Level.SEVERE,"Error getting environment from DF.",e);
}
consultEnv = true;
}
return environmentAID;
}
示例7
private void askForMoving(Location location) {
System.out.println("The ask For moving was called with location: " + location.toString());
ACLMessage message = new ACLMessage(ACLMessage.QUERY_IF);
message.addReceiver(new AID(MobileAgent.NAME, AID.ISLOCALNAME));
addBehaviour(agentObjectBehaviour);
addBehaviour(oneReceiveBehavior);
try {
message.setContentObject(location);
} catch (IOException e) {
e.printStackTrace();
}
send(message);
}
示例8
@Override
public void action() {
switch (status) {
case ASK:
ACLMessage message = new ACLMessage(ACLMessage.CFP);
message.setConversationId(String.valueOf(System.currentTimeMillis()));
message.addReceiver(new AID(MobileAgent.NAME, AID.ISLOCALNAME));
try {
message.setContentObject((Serializable) availableLocations);
System.out.println("Adding locations successfully.");
} catch (IOException e) {
e.printStackTrace();
}
template = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.AGREE),
MessageTemplate.MatchConversationId(message.getConversationId()));
send(message);
status = RESPONSE;
break;
case RESPONSE:
ACLMessage receivedMessage = receive(template);
if (receivedMessage != null) {
handleScanAll(receivedMessage);
} else {
block();
}
break;
}
}
示例9
/** Completes the evaluation process, updating the dispatched agents of the
*event .
*/
public void complete() {
System.err.println("Completed successfully. Releasing sent agents...");
String sCur;
Object oNext;
// For every agent
while ((oNext=ActiveAgents.poll()) != null) {
sCur = (String)oNext;
// Send termination signal
ACLMessage msg = new ACLMessage(ACLMessage.CANCEL);
msg.setSender(getAID());
msg.addReceiver(new AID(sCur, false));
msg.setContent(NGramDocumentComparatorAgent.TERMINATION_MESSAGE);
send(msg);
}
psOutputStream.flush();
psOutputStream.close();
addBehaviour(new WakerBehaviour(this, 10000) {
public void onWake() {
doDelete();
}
});
}
示例10
/** Completes the evaluation process, updating the dispatched agents of the
*event .
*/
public void complete() {
System.err.println("Completed successfully. Releasing sent agents...");
String sCur;
Object oNext;
// For every agent
while ((oNext=ActiveAgents.poll()) != null) {
sCur = (String)oNext;
// Send termination signal
ACLMessage msg = new ACLMessage(ACLMessage.CANCEL);
msg.setSender(getAID());
msg.addReceiver(new AID(sCur, false));
msg.setContent(NGramDocumentComparatorAgent.TERMINATION_MESSAGE);
send(msg);
}
psOutputStream.flush();
psOutputStream.close();
addBehaviour(new WakerBehaviour(this, 10000) {
public void onWake() {
doDelete();
}
});
}
示例11
public void sendMsg(Message m) throws Exception {
ACLMessage acl = jasonToACL(m);
acl.addReceiver(new AID(m.getReceiver(), AID.ISLOCALNAME));
if (m.getInReplyTo() != null) {
String convid = conversationIds.get(m.getInReplyTo());
if (convid != null) {
acl.setConversationId(convid);
}
}
if (logger.isLoggable(Level.FINE)) logger.fine("Sending message: " + acl);
send(acl);
}
示例12
public void informAgToPerformCycle(final String agName, final int cycle) {
addBehaviour(new OneShotBehaviour() {
public void action() {
ACLMessage m = new ACLMessage(ACLMessage.INFORM);
m.setOntology(controllerOntology);
m.addReceiver(new AID(agName, AID.ISLOCALNAME));
m.setContent("performCycle");
m.addUserDefinedParameter("cycle", String.valueOf(cycle));
send(m);
}
});
}
示例13
/** Parses arguments and initializes migration. */
public void setup() {
Object[] oArgs = getArguments();
if ((oArgs == null) || (oArgs.length == 0))
{
System.err.println("No args...");
}
// First argument is the caller
ResultConsumer = (AID)oArgs[0];
// Get string args
String[] args;
ArrayList alArgs = new ArrayList();
for (int iCnt = 0; iCnt < oArgs.length; iCnt++) {
if (oArgs[iCnt] instanceof String)
alArgs.add(oArgs[iCnt]);
}
args = new String[alArgs.size()];
args = (String[])alArgs.toArray(args);
// DEBUG LINES
// System.err.println(this.getName() + ": Parsing args...");
//////////////
Hashtable hSwitches = gr.demokritos.iit.jinsect.utils.parseCommandLineSwitches(args);
// Parse commandline
try {
WordMin = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"wordMin", "1"));
WordMax = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"wordMax", "2"));
WordDist = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"wordDist", "3"));
CharMin = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"charMin", "3"));
CharMax = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"charMax", "5"));
CharDist = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"charDist", "3"));
MigrationProbability = Double.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"migProb",
String.valueOf(MigrationProbability)));
// Define method
Do = gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"do", "all");
// Determine if silent
Silent=gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches, "s", "FALSE").equals("TRUE");
if (!Silent)
System.err.println(this.getName() + ":" + "Using parameters:\n" + hSwitches);
}
catch (ClassCastException cce) {
System.err.println(this.getName() + ":" + "Malformed switch:" + cce.getMessage() + ". Aborting...");
}
//setState(ACTIVE_STATE); // Set state to active
super.setup(); // Adds check for locations
}
示例14
/** Parses arguments and initializes migration. */
public void setup() {
Object[] oArgs = getArguments();
if ((oArgs == null) || (oArgs.length == 0))
{
System.err.println("No args...");
}
// First argument is the caller
ResultConsumer = (AID)oArgs[0];
// Get string args
String[] args;
ArrayList alArgs = new ArrayList();
for (int iCnt = 0; iCnt < oArgs.length; iCnt++) {
if (oArgs[iCnt] instanceof String)
alArgs.add(oArgs[iCnt]);
}
args = new String[alArgs.size()];
args = (String[])alArgs.toArray(args);
// DEBUG LINES
// System.err.println(this.getName() + ": Parsing args...");
//////////////
Hashtable hSwitches = gr.demokritos.iit.jinsect.utils.parseCommandLineSwitches(args);
// Parse commandline
try {
WordMin = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"wordMin", "1"));
WordMax = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"wordMax", "2"));
WordDist = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"wordDist", "3"));
CharMin = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"charMin", "3"));
CharMax = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"charMax", "5"));
CharDist = Integer.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"charDist", "3"));
MigrationProbability = Double.valueOf(gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"migProb",
String.valueOf(MigrationProbability)));
// Define method
Do = gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches,"do", "all");
// Determine if silent
Silent=gr.demokritos.iit.jinsect.utils.getSwitch(hSwitches, "s", "FALSE").equals("TRUE");
if (!Silent)
System.err.println(this.getName() + ":" + "Using parameters:\n" + hSwitches);
}
catch (ClassCastException cce) {
System.err.println(this.getName() + ":" + "Malformed switch:" + cce.getMessage() + ". Aborting...");
}
//setState(ACTIVE_STATE); // Set state to active
super.setup(); // Adds check for locations
}
示例15
protected void setup() {
// Printout a welcome message
System.out.println("Hallo! Buyer-agent "+getAID().getName()+" is ready.");
// Get the title of the book to buy as a start-up argument
Object[] args = getArguments();
if (args != null && args.length > 0) {
targetBookTitle = (String) args[0];
System.out.println("Target book is "+targetBookTitle);
// Add a TickerBehaviour that schedules a request to seller agents every minute
addBehaviour(new TickerBehaviour(this, 10000) {
protected void onTick() {
System.out.println("Trying to buy "+targetBookTitle);
// Update the list of seller agents
DFAgentDescription template = new DFAgentDescription();
ServiceDescription sd = new ServiceDescription();
sd.setType("book-selling");
template.addServices(sd);
try {
DFAgentDescription[] result = DFService.search(myAgent, template);
System.out.println("Found the following seller agents:");
sellerAgents = new AID[result.length];
for (int i = 0; i < result.length; ++i) {
sellerAgents[i] = result[i].getName();
System.out.println(sellerAgents[i].getName());
}
} catch (FIPAException fe) {
fe.printStackTrace();
}
// Perform the request
myAgent.addBehaviour(new RequestPerformer());
}
} );
} else {
// Make the agent terminate
System.out.println("No target book title specified");
doDelete();
}
}