Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
16da5ac6a5c3ebea6868593e0b5433814b2d79b3
[simgrid.git] / examples / msg / chainsend / messages.c
1 #include "messages.h"
2
3 msg_task_t task_message_new(e_message_type type, unsigned int len, const char *issuer_hostname, const char *mailbox)
4 {
5   message_t msg = xbt_new(s_message_t, 1);
6   msg->type = type;
7   msg->issuer_hostname = xbt_strdup(issuer_hostname);
8   msg->mailbox = xbt_strdup(mailbox);
9   msg->prev_hostname = NULL;
10   msg->next_hostname = NULL;
11   msg_task_t task = MSG_task_create(NULL, 0, len, msg);
12
13   return task;
14 }
15
16 msg_task_t task_message_chain_new(const char *issuer_hostname, const char *mailbox, const char* prev, const char *next, const unsigned int num_pieces)
17 {
18   msg_task_t task = task_message_new(MESSAGE_BUILD_CHAIN, MESSAGE_BUILD_CHAIN_SIZE, issuer_hostname, mailbox);
19   message_t msg = MSG_task_get_data(task);
20   msg->prev_hostname = xbt_strdup(prev);
21   msg->next_hostname = xbt_strdup(next);
22   msg->num_pieces = num_pieces;
23
24   return task;
25 }
26
27 msg_task_t task_message_data_new(const char *issuer_hostname, const char *mailbox, const char *block, unsigned int len)
28 {
29   msg_task_t task = task_message_new(MESSAGE_SEND_DATA, MESSAGE_SEND_DATA_HEADER_SIZE + len, issuer_hostname, mailbox);
30   message_t msg = MSG_task_get_data(task);
31   msg->data_block = block;
32   msg->data_length = len;
33
34   return task;
35 }
36
37 void task_message_delete(void *task)
38 {
39   message_t msg = MSG_task_get_data(task);
40   xbt_free(msg->issuer_hostname);
41   xbt_free(msg->mailbox);
42   xbt_free(msg);
43   MSG_task_destroy(task);
44 }