1 /* Copyright (c) 2012. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 #include "bittorrent.h"
9 * Build a new empty message
10 * @param type type of the message
11 * @param issuer_host_name hostname of the issuer, for debuging purposes
12 * @param mailbox mailbox where the peer should answer
13 * @param peer_id id of the issuer
15 msg_task_t task_message_new(e_message_type type, const char *issuer_host_name, const char *mailbox, int peer_id) {
16 message_t message = xbt_new(s_message_t,1);
17 message->issuer_host_name = issuer_host_name;
18 message->peer_id = peer_id;
19 message->mailbox = mailbox;
21 msg_task_t task = MSG_task_create(NULL,0,MESSAGE_SIZE,message);
25 * Builds a message containing an index.
27 msg_task_t task_message_index_new(e_message_type type, const char *issuer_host_name, const char *mailbox, int peer_id, int index) {
28 msg_task_t task = task_message_new(type,issuer_host_name, mailbox, peer_id);
29 message_t message = MSG_task_get_data(task);
30 message->index = index;
33 msg_task_t task_message_bitfield_new(const char *issuer_host_name, const char *mailbox, int peer_id, char *bitfield) {
34 msg_task_t task = task_message_new(MESSAGE_BITFIELD,issuer_host_name, mailbox, peer_id);
35 message_t message = MSG_task_get_data(task);
36 message->bitfield = bitfield;
39 msg_task_t task_message_request_new(const char *issuer_host_name, const char *mailbox, int peer_id, int index, int block_index, int block_length) {
40 msg_task_t task = task_message_index_new(MESSAGE_REQUEST,issuer_host_name, mailbox, peer_id, index);
41 message_t message = MSG_task_get_data(task);
42 message->block_index = block_index;
43 message->block_length = block_length;
46 msg_task_t task_message_piece_new(const char *issuer_host_name, const char *mailbox, int peer_id, int index, int stalled, int block_index, int block_length) {
47 msg_task_t task = task_message_index_new(MESSAGE_PIECE,issuer_host_name, mailbox, peer_id, index);
48 message_t message = MSG_task_get_data(task);
49 message->stalled = stalled;
50 message->block_index = block_index;
51 message->block_length = block_length;
54 void task_message_free(void* task) {
55 message_t message = MSG_task_get_data(task);
57 MSG_task_destroy(task);