|
Magentix2
2.1.1
|


Public Member Functions | |
| int | getMinArgs () |
| int | getMaxArgs () |
| void | checkArguments (Term[] args) throws JasonException |
| Object | execute (TransitionSystem ts, Unifier un, Term[] args) throws Exception |
Package Attributes | |
| Jason_Fipa_RequestW_Initiator | fri = null |
This class represents the internal action to be used when adding a conversation to a Jason agent under the Fipa Request When Protocol as initiator
Definition at line 24 of file ia_fipa_requestw_Initiator.java.
| void jason.stdlib.ia_fipa_requestw_Initiator.checkArguments | ( | Term[] | args | ) | throws JasonException |
Definition at line 39 of file ia_fipa_requestw_Initiator.java.
{
super.checkArguments(args);
boolean result = false;
if (((Term)args[args.length-1]).isLiteral()){result=true;}
result = (result && (((Term)args[0]).isString()) );
if ( protocolSteep.compareTo(Protocol_Template.START_STEP)==0)
{
int cont = 0;
for (Term t:args){
switch (cont){
case 1:result = (result&&t.isAtom());
break;
case 2:result = (result&&t.isNumeric());
break;
case 3:result = (result&&t.isString());
break;
}
cont++;
}
}
if ((protocolSteep.compareTo(Protocol_Template.REQUEST_STEP)==0)||
(protocolSteep.compareTo(Protocol_Template.TASK_DONE_STEP)==0))
{
result = (result && (((Term)args[1]).isLiteral()) ); //Condition
}
if (protocolSteep.compareTo(Protocol_Template.REQUEST_STEP)==0)
{
result = (result && (((Term)args[2]).isAtom()) );
}
if (!result)
{
throw JasonException.createWrongArgument(this,"Parameters must be in correct format.");
}
}
| Object jason.stdlib.ia_fipa_requestw_Initiator.execute | ( | TransitionSystem | ts, |
| Unifier | un, | ||
| Term[] | args | ||
| ) | throws Exception |
Definition at line 82 of file ia_fipa_requestw_Initiator.java.
{
protocolSteep = getTermAsString(args[0]);
checkArguments(args);
agentConversationID = getAtomAsString(args[args.length-1]);
agName = ts.getUserAgArch().getAgName();
ConvJasonAgent myag = ((ConvMagentixAgArch)ts.getUserAgArch()).getJasonAgent();
ts.getAg().getLogger().info("CALLING INTERNAL ACTION WITH STEEP: '"+protocolSteep+"'"+" CID: "+agentConversationID);
/*
* When a FR Protocol is taking place*/
if (protocolSteep.compareTo(Protocol_Template.START_STEP)==0){
String participant = getAtomAsString(args[1]);
timeOut = getTermAsInt(args[2]);
String initialInfo = getTermAsString(args[4]);
//This time allows participants to join the conversation
int wait = 0;
while(wait<=100000){
wait++;
}
//building message template
ACLMessage msg = new ACLMessage(ACLMessage.REQUEST);
msg.setProtocol("request-when");
msg.setContent(agName+","+initialInfo+","+agentConversationID);
String factName = "Web_Protocol_Factory";
if (fri == null){
fri = new Jason_Fipa_RequestW_Initiator(agName, ts);
Protocol_Factory = fri.newFactory(factName, null,
msg, 1, ((ConvMagentixAgArch)ts.getUserAgArch()).getJasonAgent(),timeOut);
((ConvMagentixAgArch)ts.getUserAgArch()).getJasonAgent().addFactoryAsInitiator(Protocol_Factory);
}
/* finally the new conversation starts an asynchronous conversation.*/
myag.lock();
String ConvID = myag.newConvID();
FRWConversation conv = new FRWConversation(agentConversationID,ConvID,timeOut,participant,initialInfo,
((ConvMagentixAgArch)ts.getUserAgArch()).getJasonAgent().getAid(),factName); //the internal id is unknown yet
ConvCProcessor processorTemplate = ((ConvCFactory)Protocol_Factory).cProcessorTemplate();
processorTemplate.setConversation(conv);
msg.setConversationId(ConvID);
ConvCProcessor convPprocessor = myag.newConversation(msg, processorTemplate, false, Protocol_Factory);
convPprocessor.setConversation(conv);
myag.unlock();
conversationsList.put(agentConversationID, conv);
}else
if(protocolSteep.compareTo(Protocol_Template.REQUEST_STEP)==0){
((FRWConversation)conversationsList.get(agentConversationID)).frMessage=getTermAsString(args[1]);
ACLMessage requestmsg = new ACLMessage();
requestmsg.setSender(myag.getAid());
requestmsg.setReceiver(myag.getAid());
requestmsg.setProtocol("request-when");
requestmsg.setPerformative(ACLMessage.INFORM);
requestmsg.setContent("Do the request");
requestmsg.setConversationId(((FRWConversation)conversationsList.get(agentConversationID)).internalConvID);
//Message for getting out of the WAIT_FOR_CONDITION state
myag.send(requestmsg);
}else
if(protocolSteep.compareTo(Protocol_Template.TASK_DONE_STEP)==0){
conversationsList.get(agentConversationID).release_semaphore();
conversationsList.remove(agentConversationID);
}
return true;
}
Definition at line 36 of file ia_fipa_requestw_Initiator.java.
{ return 6; };
Definition at line 35 of file ia_fipa_requestw_Initiator.java.
{ return 2; };
Jason_Fipa_RequestW_Initiator jason.stdlib.ia_fipa_requestw_Initiator.fri = null [package] |
Definition at line 33 of file ia_fipa_requestw_Initiator.java.