X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0868c23f9325ad81241a6e1df80e804d7f4067b7..613cd4ffa7ffbfdd4f21bf7ecb6053daf666b95e:/examples/msg/bittorrent/messages.h diff --git a/examples/msg/bittorrent/messages.h b/examples/msg/bittorrent/messages.h index 82515f7dc8..dab23afb66 100644 --- a/examples/msg/bittorrent/messages.h +++ b/examples/msg/bittorrent/messages.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012. The SimGrid Team. +/* Copyright (c) 2012-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -7,6 +7,23 @@ #ifndef BITTORRENT_MESSAGES_H_ #define BITTORRENT_MESSAGES_H_ #include + +/** + * Message sizes + * Sizes based on report by A. Legout et al, Understanding BitTorrent: An Experimental Perspective + * http://hal.inria.fr/inria-00000156/en + */ +#define MESSAGE_HANDSHAKE_SIZE 68 +#define MESSAGE_CHOKE_SIZE 5 +#define MESSAGE_UNCHOKE_SIZE 5 +#define MESSAGE_INTERESTED_SIZE 5 +#define MESSAGE_NOTINTERESTED_SIZE 5 +#define MESSAGE_HAVE_SIZE 9 +#define MESSAGE_BITFIELD_SIZE 5 +#define MESSAGE_REQUEST_SIZE 17 +#define MESSAGE_PIECE_SIZE 13 +#define MESSAGE_CANCEL_SIZE 17 + /** * Types of messages exchanged between two peers. */ @@ -19,7 +36,8 @@ typedef enum { MESSAGE_HAVE, MESSAGE_BITFIELD, MESSAGE_REQUEST, - MESSAGE_PIECE + MESSAGE_PIECE, + MESSAGE_CANCEL } e_message_type; /** @@ -34,43 +52,45 @@ typedef struct s_message { int index; int block_index; int block_length; - int stalled:1; } s_message_t, *message_t; /** * Builds a new value-less message */ -XBT_INLINE msg_task_t task_message_new(e_message_type type, - const char *issuer_host_name, - const char *mailbox, int peer_id); +msg_task_t task_message_new(e_message_type type, + const char *issuer_host_name, + const char *mailbox, int peer_id, int size); /** * Builds a new "have/piece" message */ -XBT_INLINE msg_task_t task_message_index_new(e_message_type type, - const char *issuer_host_name, - const char *mailbox, int peer_id, - int index); +msg_task_t task_message_index_new(e_message_type type, + const char *issuer_host_name, + const char *mailbox, int peer_id, + int index, int varsize); /** * Builds a new bitfield message */ msg_task_t task_message_bitfield_new(const char *issuer_host_name, const char *mailbox, int peer_id, - char *bitfield); + char *bitfield, int bitfield_size); /** * Builds a new "request" message */ 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); + const char *mailbox, int peer_id, + int index, int block_index, + int block_length); /** * Build a new "piece" message */ 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); + int block_index, + int block_length, int block_size); /** * Free a message task */ void task_message_free(void *); + +int task_message_size(e_message_type type); #endif /* BITTORRENT_MESSAGES_H_ */