Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
BitTorrent: fixed message sizes, based on the actual protocol sizes
[simgrid.git] / examples / msg / bittorrent / messages.h
index 5073640..2a87b7c 100644 (file)
@@ -7,6 +7,21 @@
 #ifndef BITTORRENT_MESSAGES_H_
 #define BITTORRENT_MESSAGES_H_
 #include <msg/msg.h>
+
+/**
+ * Message sizes
+ */
+#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.
  */
@@ -41,20 +56,21 @@ typedef struct s_message {
  */
 msg_task_t task_message_new(e_message_type type,
                                        const char *issuer_host_name,
-                                       const char *mailbox, int peer_id);
+                                       const char *mailbox, int peer_id, 
+                                       int size);
 /**
  * Builds a new "have/piece" message
  */
 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 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
  */
@@ -68,9 +84,11 @@ msg_task_t task_message_request_new(const char *issuer_host_name,
 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_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_ */