Протокол по нефритовым агентам с ACL - PullRequest
0 голосов
/ 12 апреля 2020

Я хотел разработать протокол между двумя агентами (на разных платформах), например, между Agent1 и Agent2:

1.Agent1 send a message to Agent2 with a nonce
2.Agent2 receive the nonce, make a mathematic operation and then send to Agent1
3.Agent1 receive the message and sent Agent2 an ACK

, поэтому я хочу создать функцию с именем, например, doProtocol (Location destiny, int nonce) и выполняю этот процесс автоматически

Я знаю, как отправлять или получать сообщения, но не могу найти, как это сделать одновременно. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 01 мая 2020

Я бы использовал FIPA-RequestInteraction.

Агент 1, добавить поведение AchieveREInitiation. В PrepareRequest укажите свою функцию

prepareRequest(ACLmessage request)
{
  request =  getNonceMsg();
  return request;
}
handleInform(ACLmessage reply)
{
  //acknowledge response if you want to.
}

Агент 2, добавьте поведение AchieveREResponder. В prepareResponse укажите вашу функцию

prepareResponse(ACLmessage reply)
{
  response =  compileResponse(reply.getContent());
  return response;
}

...