| 42 | |
| 43 | Receiving a message can be done in two ways: either the memory is initialized beforehand and the buffer size is given as the third argument, or a 0 pointer is passed, in which case MUSCLE will initialize the memory. In both cases, the memory must be freed by the user. For example: |
| 44 | {{{ |
| 45 | size_t sz = 100; |
| 46 | double *data = (double *)malloc(sz*sizeof(double)); |
| 47 | if (data) { |
| 48 | for (int i = 0; !MUSCLE_Will_Stop(); i++) { |
| 49 | MUSCLE_Receive("exitName", data, &sz, MUSCLE_DOUBLE); |
| 50 | // do something with the data |
| 51 | } |
| 52 | free(data); |
| 53 | }}} |
| 54 | or |
| 55 | {{{ |
| 56 | size_t sz = 0; |
| 57 | if (data) { |
| 58 | for (int i = 0; !MUSCLE_Will_Stop(); i++) { |
| 59 | double *data = (double *)MUSCLE_Receive("exitName", (void *)0, &sz, MUSCLE_DOUBLE); |
| 60 | // do something with the data |
| 61 | // data will have length sz; |
| 62 | free(data); |
| 63 | } |
| 64 | }}} |