send.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * mycoagent.c
  3. *
  4. * This is an example agent that showcases the use of mycorrhiza.
  5. */
  6. #include <time.h>
  7. #include "../../src/myco-agent.c"
  8. int main (int argc, char *argv []) {
  9. int message_count = atoi (argv [1]);
  10. unsigned long throughput;
  11. double megabits;
  12. if (argc != 2) {
  13. printf ("usage: send_recv <message-count>\n");
  14. return 1;
  15. }
  16. char *agent_name = "DOMAIN1_MYAGENT";
  17. int agent_message_queue_id = myco_agent_register(agent_name);
  18. struct resource myresource;
  19. myresource = myco_agent_read_remote_resource(agent_message_queue_id, "RESOURCE");
  20. if (myresource.size != -1) {
  21. printf("The first integer of RESOURCE is: %d\n", *((int*)myresource.pointer));
  22. }
  23. clock_t start, end;
  24. long double elapsed;
  25. start = clock();
  26. for (int i = 0; i != message_count; i++) {
  27. myco_agent_write_remote_resource(agent_message_queue_id, "RESOURCE", myresource.pointer, myresource.size, 1);
  28. }
  29. end = clock();
  30. elapsed = end - start;
  31. if (elapsed == 0)
  32. elapsed = 1;
  33. throughput = (unsigned long)
  34. ((double) message_count / (double) elapsed * 1000000);
  35. megabits = ((double) throughput * myresource.size * 8) / 1000000;
  36. printf("message size: %d [B]\n", myresource.size);
  37. printf("message count: %d\n", message_count);
  38. printf("mean throughput: %d [msg/s]\n", (int)throughput);
  39. printf("mean throughput: %.3f [Mb/s]\n", (double)megabits);
  40. myco_agent_unregister_resource(agent_message_queue_id, "RESOURCE");
  41. myco_agent_unregister(agent_name, agent_message_queue_id);
  42. return EXIT_SUCCESS;
  43. }