X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dccf1b41e9c7b5a696f01abceaa2779fe65f154f..08b0207634111339deda63fa368c42be87b6dc13:/examples/msg/app-bittorrent/peer.h diff --git a/examples/msg/app-bittorrent/peer.h b/examples/msg/app-bittorrent/peer.h index 409502dc8f..d08f1f2738 100644 --- a/examples/msg/app-bittorrent/peer.h +++ b/examples/msg/app-bittorrent/peer.h @@ -17,18 +17,16 @@ typedef struct s_peer { int id; //peer id - int pieces; //number of pieces the peer has. - char *bitfield; //list of pieces the peer has. - char *bitfield_blocks; //list of blocks the peer has. + unsigned int bitfield; //list of pieces the peer has. + unsigned long long bitfield_blocks; //list of blocks the peer has. short *pieces_count; //number of peers that have each piece. - xbt_dynar_t current_pieces; //current pieces the peer is downloading + unsigned int current_pieces; //current pieces the peer is downloading 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. const char *hostname; //peer hostname @@ -36,29 +34,29 @@ typedef struct s_peer { msg_task_t task_received; //current task being received msg_comm_t comm_received; //current comm - RngStream stream; //RngStream for double begin_receive_time; //time when the receiving communication has begun, useful for calculating host speed. - } s_peer_t; typedef s_peer_t *peer_t; /** Peer main function */ int peer(int argc, char *argv[]); +void get_status(char **status, unsigned int bitfield); int get_peers_data(peer_t peer); void leech_loop(peer_t peer, double deadline); void seed_loop(peer_t peer, double deadline); -void peer_init(peer_t peer, int id, int seed); +peer_t peer_init(int id, int seed); void peer_free(peer_t peer); -int has_finished(char *bitfield); +char* print_bitfield(unsigned int bitfield); +int has_finished(unsigned int bitfield); void handle_message(peer_t peer, msg_task_t task); -void update_pieces_count_from_bitfield(peer_t peer, char *bitfield); +void update_pieces_count_from_bitfield(peer_t peer, unsigned int bitfield); void update_choked_peers(peer_t peer); void update_interested_after_receive(peer_t peer); @@ -67,15 +65,18 @@ void update_bitfield_blocks(peer_t peer, int index, int block_index, int block_l int piece_complete(peer_t peer, int index); int get_first_block(peer_t peer, int piece); +int peer_has_not_piece(peer_t peer, unsigned int piece); +int peer_is_not_downloading_piece(peer_t peer, unsigned int piece); +int count_pieces(unsigned int bitfield); + 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 remove_current_piece(peer_t peer, connection_t remote_peer, unsigned 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);