ipc.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /**
  2. * \file IPC.h
  3. *
  4. * \brief Types, definitions and primitives for interprocess comunication
  5. * between r.li.daemon and r.li.worker
  6. *
  7. * \author Lucio Davide Spano
  8. *
  9. * This program is free software under the GPL (>=v2)
  10. * Read the COPYING file that comes with GRASS for details.
  11. *
  12. * \version 1.0
  13. *
  14. * \include stdio.h
  15. *
  16. */
  17. #include <unistd.h>
  18. #define AREA 1
  19. #define MASKEDAREA 2
  20. #define DONE 3
  21. #define ERROR 4
  22. #define TERM 5
  23. /**
  24. * \brief fields of message AREA
  25. * \member <i>aid</i> area identifier <br>
  26. * \member <i>x</i> x coordinate of upper left corner <br>
  27. * \member <i>y</i> y coordinate of upper left corner <br>
  28. * \member <i>rl</i> area length in rows <br>
  29. * \member <i>cl</i> area length in columns <br>
  30. */
  31. typedef struct fields_area
  32. {
  33. int aid;
  34. int x;
  35. int y;
  36. int rl;
  37. int cl;
  38. } fields_area;
  39. /**
  40. * \brief fields of message MASKEDAREA
  41. * \member <i>aid</i> area identifier <br>
  42. * \member <i>x</i> x coordinate of upper left corner <br>
  43. * \member <i>y</i> y coordinate of upper left corner <br>
  44. * \member <i>rl</i> area length in rows <br>
  45. * \member <i>cl</i> area length in columns <br>
  46. * \member <i>mask</i> name of area mask <br>
  47. */
  48. typedef struct fields_maskedarea
  49. {
  50. int aid;
  51. int x;
  52. int y;
  53. int rl;
  54. int cl;
  55. char mask[GNAME_MAX];
  56. } fields_maskedarea;
  57. /**
  58. * \brief fields of message DONE
  59. * \member <i>aid</i> area identifier <br>
  60. * \member <i>pid</i> pid of worker <br>
  61. * \member <i>result</i> result of analysis <br>
  62. */
  63. typedef struct fields_done
  64. {
  65. int aid;
  66. int pid;
  67. double res;
  68. } fields_done;
  69. /**
  70. * \brief fields of message ERROR
  71. * \member <i>aid</i> area identifier <br>
  72. * \member <i>pid</i> pid of worker <br>
  73. */
  74. typedef struct fields_error
  75. {
  76. int aid;
  77. int pid;
  78. } fields_error;
  79. /**
  80. * \brief fields of message TERM
  81. * \member <i>pid</i> pid of daemon <br>
  82. */
  83. typedef struct fields_term
  84. {
  85. int pid;
  86. } fields_term;
  87. /**
  88. * \brief field of the generic IPC message
  89. * \member <i>f_a</i> fields of AREA message <br>
  90. * \member <i>f_ma</i> fields of MASKEDAREA message <br>
  91. * \member <i>f_d</i> fields of DONE message <br>
  92. * \member <i>f_e</i> fields of ERROR message <br>
  93. * \member <i>f_t</i> fields of TERM message <br>
  94. */
  95. typedef union fields
  96. {
  97. fields_area f_a;
  98. fields_maskedarea f_ma;
  99. fields_done f_d;
  100. fields_error f_e;
  101. fields_term f_t;
  102. } fields;
  103. /**
  104. * \brief generic IPC message
  105. * \member <i>type</i> type of message
  106. * \member <i>fields</i> fields of message
  107. */
  108. typedef struct msg
  109. {
  110. int type;
  111. fields f;
  112. } msg;