* User parameters for transferred file data. For the test, the default values are :
* File size: 10 pieces * 5 blocks/piece * 16384 bytes/block = 819200 bytes
*/
-#define FILE_PIECES 10
-#define PIECES_BLOCKS 5
+#define FILE_PIECES 10U
+#define PIECES_BLOCKS 5U
#define BLOCK_SIZE 16384
static const unsigned long int FILE_SIZE = FILE_PIECES * PIECES_BLOCKS * BLOCK_SIZE;
}
}
-/** @brief Retrieves the peer list from the tracker
+/** @brief Retrieves the peer list from the tracker
* @param peer current peer data
*/
int get_peers_data(peer_t peer)
xbt_free(peer);
}
-/** @brief Returns if a peer has finished downloading the file
+/** @brief Returns if a peer has finished downloading the file
* @param bitfield peer bitfield
*/
int has_finished(unsigned int bitfield)
xbt_assert((remote_peer != NULL), "A non-in-our-list peer has sent us a message. WTH ?");
xbt_assert(!remote_peer->choked_download);
remote_peer->choked_download = 1;
- remove_current_piece(peer, remote_peer, remote_peer->current_piece);
+ if (remote_peer->current_piece != -1)
+ remove_current_piece(peer, remote_peer, remote_peer->current_piece);
break;
case MESSAGE_HAVE:
XBT_DEBUG("\t for piece %d", message->index);
void update_pieces_count_from_bitfield(peer_t peer, unsigned int bitfield)
{
for (int i = 0; i < FILE_PIECES; i++) {
- if ((bitfield & (1U << i))) {
+ if (bitfield & (1U << i)) {
peer->pieces_count[i]++;
}
}
char *key;
xbt_dict_cursor_t cursor;
connection_t connection;
- int interested;
xbt_dict_foreach(peer->peers, cursor, key, connection) {
- interested = 0;
if (connection->am_interested != 0) {
+ int interested = 0;
//Check if the peer still has a piece we want.
for (int i = 0; i < FILE_PIECES; i++) {
if (peer_has_not_piece(peer, i) && connection_has_piece(connection,i)) {
int partially_downloaded_piece(peer_t peer, connection_t remote_peer)
{
for (int i = 0; i < FILE_PIECES; i++) {
- if (peer_has_not_piece(peer, i) && connection_has_piece(remote_peer,i)&& peer_is_not_downloading_piece(peer, i)) {
- if (get_first_block(peer, i) > 0)
- return i;
- }
+ if (peer_has_not_piece(peer, i) && connection_has_piece(remote_peer, i) && peer_is_not_downloading_piece(peer, i) &&
+ get_first_block(peer, i) > 0)
+ return i;
}
return -1;
}