X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/37f24fd67e04254218bd7b43dcb7650506776868..b3b356352e87ae00a20f737c48e19b0c8413455a:/examples/msg/bittorrent/peer.h diff --git a/examples/msg/bittorrent/peer.h b/examples/msg/bittorrent/peer.h index b4687745cc..ce96099c7f 100644 --- a/examples/msg/bittorrent/peer.h +++ b/examples/msg/bittorrent/peer.h @@ -1,11 +1,12 @@ -/* Copyright (c) 2012. The SimGrid Team. +/* Copyright (c) 2012-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ + #ifndef BITTORRENT_PEER_H #define BITTORRENT_PEER_H -#include +#include #include #include #include @@ -24,11 +25,11 @@ typedef struct s_peer { short *pieces_count; //number of peers that have each piece. xbt_dynar_t current_pieces; //current pieces the peer is downloading - int current_piece; //current pieces - int pieces_requested; //number of pieces the peer has requested xbt_dict_t peers; //peers list xbt_dict_t active_peers; //active peers list + int round; //current round for the chocking algorithm. + char mailbox[MAILBOX_SIZE]; //peer mailbox. char mailbox_tracker[MAILBOX_SIZE]; //pair mailbox while communicating with the tracker. @@ -37,13 +38,11 @@ typedef struct s_peer { msg_task_t task_received; //current task being received msg_comm_t comm_received; //current comm - int round; //current round for the chocking algortihm. RngStream stream; //RngStream for double begin_receive_time; //time when the receiving communication has begun, useful for calculating host speed. - xbt_dynar_t pending_sends; // list of sends being delivered } s_peer_t, *peer_t; /** @@ -60,13 +59,9 @@ void peer_free(peer_t peer); int has_finished(char *bitfield); -void handle_pending_sends(peer_t peer); void handle_message(peer_t peer, msg_task_t task); -void wait_for_pieces(peer_t peer, double deadline); - void update_pieces_count_from_bitfield(peer_t peer, char *bitfield); -void update_current_piece(peer_t peer); void update_choked_peers(peer_t peer); void update_interested_after_receive(peer_t peer); @@ -77,9 +72,20 @@ int piece_complete(peer_t peer, int index); int get_first_block(peer_t peer, int piece); -void send_requests_to_peer(peer_t peer, connection_t remote_peer); +int nb_interested_peers(peer_t peer); +int is_interested(peer_t peer, connection_t remote_peer); +int is_interested_and_free(peer_t peer, connection_t remote_peer); +int in_current_pieces(peer_t peer, int piece); +int partially_downloaded_piece(peer_t peer, connection_t remote_peer); + +void request_new_piece_to_peer(peer_t peer, connection_t remote_peer); +void send_request_to_peer(peer_t peer, connection_t remote_peer, int piece); +void remove_current_piece(peer_t peer, connection_t remote_peer, + int current_piece); + +void update_active_peers_set(peer_t peer, connection_t remote_peer); +int select_piece_to_download(peer_t peer, connection_t remote_peer); -void send_interested_to_peers(peer_t peer); void send_handshake_all(peer_t peer); void send_interested(peer_t peer, const char *mailbox); @@ -91,10 +97,9 @@ void send_choked(peer_t peer, const char *mailbox); void send_unchoked(peer_t peer, const char *mailbox); void send_have(peer_t peer, int piece); -void send_request(peer_t peer, const char *mailbox, int piece, int block_index, - int block_length); -void send_piece(peer_t peer, const char *mailbox, int piece, int stalled, +void send_request(peer_t peer, const char *mailbox, int piece, + int block_index, int block_length); +void send_piece(peer_t peer, const char *mailbox, int piece, int block_index, int block_length); -int in_current_pieces(peer_t peer, int piece); #endif /* BITTORRENT_PEER_H */