Example 2: Change a parameter in a running application
client.c
#include <stdio.h>
#include <unistd.h>
#include <libmc.h>

int main() {
  MCAgency_t agency;
  int i, local_port = 5051, server_port = 5050;
  char *server_name = "bird1.engr.ucdavis.edu";
  char mobagent[3][20] = {"mobileagent1.xml", 
                          "mobileagent2.xml", 
                          "mobileagent3.xml"};

  agency = MC_Initialize(local_port, NULL);

  for(i=0; i<3; i++) {
    MC_SendACLMessageFile(agency, mobagent[i], server_name, server_port);
    sleep(1);
  } 

  MC_End(agency);

  return 0;
}
  
server.c
#include <stdio.h>
#include <unistd.h>
#include <libmc.h>

int main() {
  double temp = 55.55, *ptemp;
  int i, n = 50000, local_port = 5050, mutex_id;
  char *mobagentname = "mobileagent";
  MCAgency_t agency;
  MCAgent_t agent;
  ChInterp_t interp;

  agency = MC_Initialize(local_port, NULL);
  for(i=0; i<n; i++) {
    printf("i = %d\n", i);
    agent = MC_FindAgentByName(agency, "mobileagent");
    if(agent != NULL) {
      interp = MC_GetAgentExecEngine(agent);
      if(interp != NULL) {
        ptemp = Ch_SymbolAddrByName(interp, "temp");
        temp = *ptemp;
        MC_DeleteAgent(agent);
      }
    }
    printf("temp = %f\n", temp);
    sleep(1);
  }
  MC_End(agency);

  return 0;
}
mobileagent1.xml
<?xml version="1.0"?>
<!DOCTYPE myMessage SYSTEM "gafmessage.dtd">
<GAF_MESSAGE>
<MESSAGE message="MOBILE_AGENT">
<MOBILE_AGENT>
<AGENT_DATA>
<NAME>mobileagent</NAME>
<OWNER>IEL</OWNER>
<HOME>iel2.engr.ucdavis.edu:5051</HOME>
<TASKS task="1" num="0">
<TASK num="0" 
      persistent="1" 
      return="no-return" 
      complete="0" 
      server="bird1.engr.ucdavis.edu:5050">
</TASK>
<AGENT_CODE>
<![CDATA[
  double temp = 66.66;
]]>
</AGENT_CODE>
</TASKS>
</AGENT_DATA>
</MOBILE_AGENT>
</MESSAGE>
</GAF_MESSAGE>
  
mobileagent2.xml
<?xml version="1.0"?>
<!DOCTYPE myMessage SYSTEM "gafmessage.dtd">
<GAF_MESSAGE>
<MESSAGE message="MOBILE_AGENT">
<MOBILE_AGENT>
<AGENT_DATA>
<NAME>mobileagent</NAME>
<OWNER>IEL</OWNER>
<HOME>iel2.engr.ucdavis.edu:5051</HOME>
<TASKS task="1" num="0">
<TASK num="0"
      persistent="1" 
      return="no-return" 
      complete="0" 
      server="bird1.engr.ucdavis.edu:5050">
</TASK>
<AGENT_CODE>
<![CDATA[
   double temp = 77.77;
]]>
</AGENT_CODE>
</TASKS>
</AGENT_DATA>
</MOBILE_AGENT>
</MESSAGE>
</GAF_MESSAGE>
  
mobileagent3.xml
<?xml version="1.0"?>
<!DOCTYPE myMessage SYSTEM "gafmessage.dtd">
<GAF_MESSAGE>
<MESSAGE message="MOBILE_AGENT">
<MOBILE_AGENT>
<AGENT_DATA>
<NAME>mobileagent</NAME>
<OWNER>IEL</OWNER>
<HOME>iel2.engr.ucdavis.edu:5051</HOME>
<TASKS task="1" num="0">
<TASK num="0" 
      persistent="1" 
      return="no-return" 
      complete="0" 
      server="bird1.engr.ucdavis.edu:5050">
</TASK>
<AGENT_CODE>
<![CDATA[
   double temp = 88.88;
]]>
</AGENT_CODE>
</TASKS>
</AGENT_DATA>
</MOBILE_AGENT>
</MESSAGE>
</GAF_MESSAGE>